下面是乙個總的**,大致總結了我們常見的所有的排序演算法的特點。
排序法平均時間
最差情形
穩定度額外空間
備註冒泡
o(n2)
o(n2)
穩定o(1)
n小時較好
交換o(n2)
o(n2)
不穩定o(1)
n小時較好
選擇o(n2)
o(n2)
不穩定o(1)
n小時較好
插入o(n2)
o(n2)
穩定o(1)
大部分已排序時較好
基數o(logrb)
o(logrb)
穩定o(n)
b是真數(0-9),
r是基數(個十百)
shell
o(nlogn)
o(ns) 1不穩定
o(1)
s是所選分組
快速o(nlogn)
o(n2)
不穩定o(nlogn)
n大時較好
歸併o(nlogn)
o(nlogn)
穩定o(1)
n大時較好
堆o(nlogn)
o(nlogn)
不穩定o(1)
n大時較好
介紹一下工程中的綜合排序演算法:
當n小於等於60,選擇插入排序,當n很大時,需要排序的是基本資料型別採用快速排序,需要排序的是應用資料型別採用快速排序
有關排序問題的補充:
1,歸併排序的額外空間複雜度可以變成o(1),但是非常難,不 需要掌握,可以搜「歸併排序 內部快取法」
2,快速排序可以做到穩定性問題,但是非常難,不需要掌握, 可以搜「01 stable sort」
3,有一道題目,是奇數放在陣列左邊,偶數放在陣列右邊,還 要求原始的相對次序不變,碰到這個問題,可以懟面試官。面試 官非良人。
排序演算法穩定性
學習中,有個問題叫做排序演算法穩定性 若待排序的序列中,存在多個具有相同關鍵字的記錄,經過排序,這些記錄的相對次序保持不變,則稱該演算法是穩定的 若經排序後,記錄的相對 次序發生了改變,則稱該演算法是不穩定的。假定在待排序的記錄序列中,存在多個具有相同鍵值的記錄,若經過排序,這些記錄的相對次序保持不...
排序演算法穩定性
快速排序 希爾排序 堆排序 直接選擇排序不是穩定的排序演算法,而基數排序 氣泡排序 直接插入排序 折半插入排序 歸併排序是穩定的排序演算法 首先,排序演算法的穩定性大家應該都知道,通俗地講就是能保證排序前2個相等的數其在序列的前後位置順序和排序後它們兩個的前後位置順序相同。在簡單形式化一下,如果ai...
排序演算法穩定性
排序演算法穩定性 概念 假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,ri rj,且ri在rj之前,而在排序後的序列中,ri仍在rj之前,則稱這種排序演算法是穩定的 否則稱為不穩定的。排序的穩定性是指如果在排序的序列中,存在前後相同的...