程式=資料結構+演算法資料結構與演算法資料結構是資料之間的一種或多種特定關係的集合
資料結構分為邏輯結構(資料物件中資料元素之間的相互關係)和物理結構(資料結構在計算機中的儲存形式)
解決特定問題的求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作
特徵:輸入、輸出、有窮性、確定性、可行性
要求:正確性、可讀性、健壯性、時間效率高且儲存量低
通過設計後的測試程式和資料,利用計算機計時器對不同演算法程式設計的執行時間進行比較,從而確定演算法效率的高低
缺陷:費時費力,受測試環境影響大
在編寫電腦程式之前,依據統計方法對演算法進行估算
影響效率的因素
如果精確地研究執行次數是很累的,我們側重研究的是演算法隨著輸入規模擴大增長量的乙個抽象,重要的是把基本操作的數量和輸入模式關聯起來
函式的漸近增長常數不會影響演算法的變化曲線,最高次項的係數也不重要,最重要的是最高次項的次數給定兩個函式f(n)和g(n),如果存在乙個整數n,使得對於所有的n>n,f(n)總是比g(n)大,那麼我們說f(n)的增長漸近快於g(n)
在進行演算法分析是,語句總的執行次數t(n)是關於問題規模n的函式,進而分析t(n)隨n的變化情況並確定t(n)的數量t(n)=o(f(n))
推導大o階:
用1取代執行時間中的所有常數項
只保留最高次項
令最高次項的係數為1
大o階的分類:
另外地,o(迴圈)=迴圈執行次數n ^ 複雜度
排列順序:o(1)在乙個演算法執行過程中臨時占用儲存空間大小的度量,s(n)=o(f(n))
複雜度預設為時間複雜度。時間複雜度描述執行時間的需求,空間複雜度描述空間的需求
資料結構與演算法概述
研一結束了,馬上要進入研二的生活了。接下來就要進入了找工作的階段。在網上查詢了各種找工作的面經,發現資料結構是應聘軟體行業必考的內容之一,並在資料結構在對自己的軟體設計水平的提高也有很大的幫助,所以從今天開始將進行資料結構的學習。在學習一樣東西之前,先要明白其含義。資料結構的定義如下 我們如何把現實...
資料結構與演算法概述
資料型別 程式語言中的資料型別是指具有預定義值得乙個資料集合,常見的資料型別有 整數型,浮點型,字串,字元等。一般有兩種資料型別 系統定義的資料型別 基本資料型別 使用者自定義的資料型別 使用者自定義的類,可以將系統定義的資料型別進行組合封裝成使用者需要的資料型別 class student 資料結...
資料結構與演算法概述
從問題入手比如人狼羊菜過河問題。問題抽象 首先需要分析和抽象問題的需求和限制,簡歷問題模型。目的 把人狼羊菜運到對岸 條件 資料抽象 接下來我們需要恰當的資料結構來描述這個數學模型。簡單排列組合我們發現系統一共有16種狀態 包括空狀態 但是按照條件我們能夠踢出 狼羊,人菜 與前者互補狀態 羊菜,人狼...