時間復雜度:
計算機科學中,算法的時間復雜度是一個函數,它定量描述了該算法的運行時間。這是一個關于代表算法輸入值的字符串的長度的函數。時間復雜度常用大O符號表述,不包括這個函數的低階項和首項系數。使用這種方式時,時間復雜度可被稱為是漸近的,它考察當輸入值大小趨近無窮時的情況。
空間復雜度:
空間復雜度(Space Complexity)是對一個算法在運行過程中臨時占用存儲空間大小的量度,記做S(n)=O(f(n))。
排序算法的穩定性:
假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,則稱這種排序算法是穩定的;否則稱為不穩定的。
穩定的排序算法
冒泡排序、插入排序、歸并排序、基數排序
非穩定的排序算法
選擇排序、希爾排序、快速排序、堆排序
這里可能有些人對選擇排序不是穩定的有疑問,舉個例子,對數組{6, 6, 2}進行選擇排序后,就會產生不穩定的新序列。
小結:
如何選擇排序算法:
1.先分析是否需要穩定性的排序
2.再分析空間復雜度是否滿足需求,然后選擇時間復雜度相對快的
3.快速排序是大多數應用場景的首選
寫在最后的:排序算法不要死記硬背復雜度如何、穩定性如何,也不需要將代碼背下來,工業庫已經有各種算法的實現,死記硬背沒有意義。只要真正理解了算法的原理,具體問題具體分析,才能靈活運用,才真正算是學會了算法。
就愛閱讀www.92to.com網友整理上傳,為您提供最全的知識大全,期待您的分享,轉載請注明出處。
歡迎轉載:http://www.kanwencang.com/bangong/20161116/54026.html
文章列表