排序演算法總結:
時間複雜度:
-平方階o(n2)的排序:各類簡單排序、直接插入、直接選擇、氣泡排序
- 線性對數o(nlg2n)排序:快速排序、堆排序和歸併排序
- o(n1+)排
序:為介於0-1之間的常數:希爾排序
- 線性o(n)排序:基數排序、桶排序、箱排序
空間複雜度:
穩定性:
特別注意:
1. 當輸入陣列有序或者基本有序時,直接插入和氣泡排序將大大減少比較次數和移動次數。時間複雜度降為o(n)。
2. 快速排序恰恰相反,當輸入陣列基本有序時,將退化為氣泡排序,時間複雜度增加到o(n2)
3. 輸入陣列有序與否對簡單排序、堆排序、歸併排序、和基數排序的時間複雜度影響不大。
常用演算法比較圖:
幾種常見的查詢演算法之比較
一 順序查詢 條件 無序或有序佇列。原理 按順序比較每個元素,直到找到關鍵字為止。時間複雜度 o n 二 二分查詢 折半查詢 條件 有序陣列 原理 查詢過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束 如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中...
幾種常見的演算法
1 窮舉法 窮舉法是最基本的演算法設計策略,其思想是列舉出問題所有的可能解,逐一進行判別,找出滿足條件的解.窮舉法的運用關鍵在於解決兩個問題 在運用窮舉法時,容易出現的問題是可能解過多,導致演算法效率很低,這就需要對列舉可能解的方法進行優化.以題1041 純素數問題為例,從1000到9999都可以看...
比較常見的幾種設計模式
第一種設計模式 單例模式 解釋 乙個單一的類,該類負責建立自己的物件,同時確保只有單個物件被建立。這個類提供了一種訪問其唯一的物件的方式,可以直接訪問,不需要例項化該類的物件。但是在js中沒有類這個概念,所以我們要通過一些別的手段來實現單例。優點 1 在記憶體裡只有乙個例項,減少了記憶體的開銷,尤其...