資料結構+演算法=程式
資料結構是對資料(操作物件)的描述,及資料的型別和組織形式,演算法則是對操作步驟的描述
1. 有窮性:
演算法中的每個步驟都能在有限時間內完成(程式可不滿足此條件)
2. 確定性:
演算法的每一步必須確切定義,在任何條件下演算法只有一條執行路徑
3. 可行性:
演算法中的所有操作必需通過已實現的基本操作運算有限次實現
4. 有輸入:
乙個演算法應有零個或多個輸入
5. 有輸出:
乙個演算法應有乙個或多個輸出
正確性:
程式無語法錯誤;對(幾組或苛刻的或一切的)輸入資料可得出滿足規格說明要求的結果
可讀性:
演算法被理解的難易程度
健壯性:
對非法輸入的抵抗能力
高效率與低儲存量需求:
效率(演算法執行時間),儲存量(演算法儲存過程中所需的最大儲存空間)均與問題規模有關
描述工具
自然語言、框圖、高階程式語言
衡量演算法效率的方法
方法區別
事前分析估算法
預先比較,比較常用
事後統計法
必需在計算機實地執行程式,易有其他因素改變演算法本質
演算法執行時間相關因素
演算法採用的策略;
演算法解決問題的規模;
程式設計採用的語言;
編譯程式產生的機器**的質量;
執行演算法的計算機速度;
後三條受計算機硬體和軟體的制約
乙個特定演算法的執行時間只依賴於問題的規模
for( int i = 0; i < n; i++)此演算法時間複雜度為o(n)
int num = 1;
while( num < n)
//假設迴圈的次數為x,則由2^x=n得出x=log₂n,
//因此得出這個演算法的時間複雜度為o(log₂n)
平方階
for( int i = 0; i < n; i++)
} //迴圈次數為 n² ,時間複雜度為o(n²)
o(1) < o(logn) < o(n) < o(nlogn) < o(n^2) < o(n^3) < o(2^n) < o(n!)
定義:
評估執行程式所需的儲存空間,可估算出程式對記憶體的使用程度,
記為 s(n) = o(f(n))
空間複雜度所需考慮因素
輸入資料、程式本身、輔助變數
資料結構之演算法
演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。演算法是需要單獨講解的,在資料結構中談到演算法,是為了幫助理解好資料結構,並不會詳談演算法的方方面面。1 2 3 100 演算法1 include int main void printf d sum...
《資料結構與演算法》之資料結構簡介
資料結構 資料 結構,資料結構是計算機儲存 組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或者儲存效率。資料結構往往同高效的檢索演算法和索引技術有關。一 資料的邏輯結構 指反映資料元素之間的邏輯關係的資料結構,其中的邏輯關...
資料結構48 資料結構之查詢演算法
在日常生活中,幾乎每天都要進行一些查詢的工作,在 簿中查閱某個人的 號碼 在電腦的資料夾中查詢某個具體的檔案等等。本節主要介紹用於查詢操作的資料結構 查詢表。查詢表是由同一型別的資料元素構成的集合。例如 號碼簿和字典都可以看作是一張查詢表。一般對於查詢表有以下幾種操作 在查詢表中只做查詢操作,而不改...