1.正確性
2.複雜度的分析
基礎知識:
級數:
t(n)=1+2+3+...+n=o(n^2)
t(n)=1^2+2^2+...+n^2=n*(n+1)*(2*n+1)/6=o(n^3)
t(n)=1^3+...+n^3=o(n^4)
可以很明顯的看出來,幾何級數的複雜度呈現出來的規律就是始終是我們的冪數的+1次冪的複雜度
無論n多大,都有可能會出現時間複雜度和n沒有任何關係的情況
1.迴圈不變式的利用
2.單調性(減而知之,規模縮減)
3.正確性(演算法必須可以終止)
max2問題的演算法分析:查詢數列中的最大的兩個元素的問題
當然,該問題在我們採用了堆這種高效的資料結構之後,時間複雜度可以優化到無限的接近o(n)
1.迭代:
思路:掃瞄兩遍,分別查詢當前最大的元素並標記(避免重複訪問)
演算法的複雜度分析:o(2n)顯然
2.遞迴:
二分遞迴查詢:我們將資料簡化為兩部分,左邊有最大和次大,右邊有最大和次大,之後我們在講左邊的最大和右邊的最大進行比較,選擇最優,然後讓第一次比較的敗者和左邊的次大作比較選出次大
邊界的判斷:
在問題的規模縮小到2,或者3的時候,我們特殊的判斷一下就好了
其餘的情況下,我們都可以按照上面的策略來進行比較
t(n)=(n/3)t(3)+2(n/3-1)
t(n)=5/3t(n)-2
資料結構和演算法緒論
讓程式設計改變世界 change the world by program 資料結構和演算法這門計算機必修課歷來無論在哪個學校,都是無比乏味和催人入睡的。因為很多時候,考研玩的不是智商,其實就是乙個人投入的時間而已。什麼是資料結構?資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及它們之間...
資料結構和演算法緒論
資料是資訊的載體,是描述客觀事物的數 字元,以及所有能輸入到計算機中並被電腦程式識別和處理的符號的集合。資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及它們之間的關係和操作等相關問題的學科 簡單來說 程式設計 資料結構 演算法 資料結構研究的就是關係,就是資料元素相互之間存在的一種或多種...
資料結構和演算法緒論
程式設計 資料結構 演算法 資料結構就是關係,沒錯,就是資料元素相互之間存在的一種或多種特定關係的集合。資料型別 是指一組性質相同的值的集合及定義在此集合上的一些操作的總稱。原子型別 是不可以再分解的基本型別,包括整型 實型 字元型等。結構型別 自若干個型別組合而戚,是可以再分解的。例,整型陣列是由...