在平時寫**時比較常用的幾種演算法,效能**如下:
排序法
平均時間 最壞
穩定額外空間
氣泡排序
o(n^2)
o(n^2)穩定
o(1)
選擇排序
o(n^2)
o(n^2)
不穩定
o(1)
插入排序
o(n^2)
o(n^2)穩定
o(1)
快速排序
o(nlogn)~ o(n)
o(n^2)
不穩定
o(nlogn)
堆排序
o(nlogn)
o(nlogn)
不穩定
o(1)
希爾排序
o(nlogn)
o(n^2)
不穩定
o(1)
歸併排序
o(nlogn)
o(nlogn)穩定
o(n)
我們可以把演算法大致分為幾類:
交換排序類:氣泡排序,快速排序;
插入排序類:插入排序,希爾排序;
選擇排序類:選擇排序,堆排序;
歸併排序類:歸併排序;
在進行開發時可以按照實際情況選擇合適的演算法進行使用。
注:
在學習過程中,發現有的書說簡單選擇排序是穩定的,有的書說是不穩定的。首先排序穩定的定義是:假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,ri=rj,且ri在rj之前,而在排序後的序列中,ri仍在rj之前,則稱這種排序演算法是穩定的;否則稱為不穩定的。
通過這個定義,我們可以嘗試對乙個小序列如:2,5,5,3進行選擇排序。
排序前:2,5,5*,3
排序後:2,3,5*,5
從上面的排序過程中,我們可以看到排序後元素5的相對次序發生了變化。在一般情況下簡單選擇排序是穩定的,但如果有多個相同元素,就會產生不穩定的情況,如上面所列舉的例子,所以我認為簡單選擇排序是一般穩定,特殊情況不穩定。
排序演算法效能分析
一 基於比較的排序演算法 1.插入排序法 直接插入排序,希爾排序,不常用的 tree sort library sort patience sorting 2.交換排序 氣泡排序,快速排序,計數排序 3.選擇排序 直接選擇排序,堆排序 4.歸併排序 歸併排序 二 不基於比較的排序演算法 基數排序,桶...
各排序演算法效能分析
插入排序 最壞時間始n 2 快速排序和插入排序的區別是 插入排序始將關鍵字插入已排序的子串行中,而快速排序始 對整個檔案,把基準關鍵字放到正確的位置上。快排最壞時間依然是n 2,平均時間始nlgn。在堆排序 的過程中只需乙個輔助空間 所以空間 複雜度為 0 1 堆排序的時間複雜度為 nlgn 由於堆...
排序演算法效能分析實驗
掌握選擇排序 氣泡排序 合併排序 快速排序 插入排序演算法原理 掌握不同排序演算法時間效率的經驗分析方法,驗證理論分析與經驗分析的一致性。現在有10億的資料 每個資料四個位元組 請快速挑選出最大的十個數,並在小規模資料上驗證演算法的正確性。排序不多說,講一下第3點。3是經典的topk問題,這麼大的資...