1.穩定性比較
插入排序、氣泡排序、二叉樹排序、二路歸併排序及其他線形排序是穩定的
選擇排序、希爾排序、快速排序、堆排序是不穩定的
2.時間複雜性比較
排序方法
平均情況
最好情況
最壞情況
歸併排序
o(nlogn)
o(nlogn)
o(nlogn)
基數排序
o(n)
o(n)
o(n)
快速排序
o(nlogn)
o(nlogn)
o(n^2)
希爾排序
o(n^1.5)
o(n)
o(n^1.5)
插入排序
o(n^2)
o(n)
o(n^2)
選擇排序
o(n^2)
o(n^2)
o(n^2)
3.輔助空間的比較
線形排序、二路歸併排序的輔助空間為o(n),其它排序的輔助空間為o(1);
4.其它比較
插入、氣泡排序的速度較慢,但參加排序的序列區域性或整體有序時,這種排序能達到較快的速度。
反而在這種情況下,快速排序反而慢了。
當n較小時,對穩定性不作要求時宜用選擇排序,對穩定性有要求時宜用插入或氣泡排序。
若待排序的記錄的關鍵字在乙個明顯有限範圍內時,且空間允許是用桶排序。
當n較大時,關鍵字元素比較隨機,對穩定性沒要求宜用快速排序。
當n較大時,關鍵字元素可能出現本身是有序的,對穩定性有要求時,空間允許的情況下。
宜用歸併排序。
當n較大時,關鍵字元素可能出現本身是有序的,對穩定性沒有要求時宜用堆排序。
重溫經典排序思想–c語言常用排序全解
1、穩定排序和非穩定排序
簡單地說就是所有相等的數經過某種排序方法後,仍能保持它們在排序之前的相對次序,我們就
說這種排序方法是穩定的。反之,就是非穩定的。
比如:一組數排序前是a1,a2,a3,a4,a5,其中a2=a4,經過某種排序後為a1,a2,a4,a3,a5,
則我們說這種排序是穩定的,因為a2排序前在a4的前面,排序後它還是在a4的前面。假如變成a1,a4,
a2,a3,a5就不是穩定的了。
2、內排序和外排序
在排序過程中,所有需要排序的數都在記憶體,並在記憶體中調整它們的儲存順序,稱為內排序;
在排序過程中,只有部分數被調入記憶體,並借助記憶體調整數在外存中的存放順序排序方法稱為外排序。
常用的排序演算法彙總
1 氣泡排序 基本思想 兩兩比較待排序的數,發現反序時交換,直到沒有反序為止。時間複雜度 o n2 空間複雜度 o 1 void buruebblesort int ary,int length 2 快速排序 基本思想 在待排序數列中任選出乙個數作為基準,用這個基準數將數列劃分為左右兩個子區,使得左...
排序方法彙總
氣泡排序是非常容易理解和實現,以從小到大排序舉例 設陣列長度為n。1 比較相鄰的前後二個資料,如果前面資料大於後面的資料,就將二個資料交換。2 這樣對陣列的第0個資料到n 1個資料進行一次遍歷後,最大的乙個資料就 沉 到陣列第n 1個位置。3 n n 1,如果n不為0就重複前面二步,否則排序完成。按...
排序法彙總
主關鍵字唯一區分不同資料,否則為次關鍵字。主關鍵字排序具有唯一性,次關鍵字否。若相同次關鍵字的元素排序可能發生交換順序,則稱演算法不穩定。常用排序演算法優劣衡量指標 時間效能好。即較少的關鍵字比較次數和元素移動次數。空間效能好。即輔助快取小。穩定性。即相同次關鍵字元素,排序前後相對位置恆定 原理 從...