算法:是爲了解決某類問題而規定的一個有限長的操作序列。
特性:有窮性,確定性,可行性,輸入,輸出
算法優劣的評價標準:
1.正確性:現在一般認爲的正確性是指算法程序對於非法輸入數據能夠得出滿足規格說明的結果。
2.可讀性
3.健壯性:當輸入非法時可以做出正確反應或處理,不會出現莫名其妙的結果。
4.時間效率高、存儲量低
函數的漸進增長:給定兩個函數f(n)、g(n),如果存在一個整數N,使得對於所有的n>N,f(n)總是比g(n)大,那麼,我們說 f(n)的增長漸進快於g(n)。也就是說一個算法會越來越優於另一個算法。
推導大O階算法的方法:
1.用常數1取代運行時間中所有的加法常數。如O(3)的時間複雜度是O(1)
2.在修改後的運行次數的函數中,只保留最高項。
3.若存在高階項且不爲1,則除去其常數。
常見的時間複雜度按所消耗的時間由小到大排列:
O(1)<O(log n)<O(n)<O(nlog n)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)