什麼是演算法呢?演算法是描述解決問題的方法。演算法(
algorithm
) 這個單詞最早出現在波斯數學家阿勒
·花刺子密在公元
825年(相當於我們中國的唐朝時期)所寫的《印度數字算術》中。 如今普遍認可的對演算法的定義是:演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。
演算法具有五個基本特性: 輸入、 輸出、 有窮性、 確定性和可行性
。好的演算法,應該具有正確性、可讀性、健壯性、高效率和低儲存量的特徵。
評價演算法的好壞,多採用事前分析估算方法,從時間複雜度和空間複雜度兩個角度對演算法進行評價。判斷乙個演算法的效率時, 函式中的常數和其他次要項常常可以忽略,而更應該關注主項(最高端項)的階數。
大話資料結構學習筆記二 演算法
演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。1 輸入輸出 演算法具有零個或者多個輸入,至少有乙個或者多個輸出。2 有窮性 指演算法在執行完有限的步驟之後,自動結束而不會出現無線玄幻,並且每個步驟都在可接受的時間內完成。3 確定性 演算法的每乙個...
《大話資料結構》
函式的漸進增長 我們現在來判斷一下,兩個演算法a和b哪個更好。假設兩個演算法的輸入規模都是n,演算法a要做2n 3次操作,你可以理解為先有乙個n次的迴圈,執行完成後,再有乙個n次迴圈,最後有三次賦值或運算,共2n 3次操作。演算法b要做3n 1次操作,你覺得它們誰更快呢 準確來說,答案是不一定的 當...
《大話資料結構》
常見的時間複雜度 常見的時間複雜度如下圖所示 常用的時間複雜度所耗費的時間從小到大依次是 o 1 o logn o n o nlogn o n o n 三次方 o 2 n次方 o n!o n n次方 我們前面已經談到了 o 1 常數階 o logn 對數階 o n 線性階 o n 平方階等,至於o ...