1. 程式人生 > >資料結構排序總結

資料結構排序總結

一、排序實質:消除逆序

二、排序演算法分類:

內部排序:整個排序過程完全在記憶體中進行,稱為內部排序。

外部排序:由於待排序記錄資料量太大,記憶體無法容納全部資料,排序需要藉助外部儲存裝置才能完成,稱為外部排序。

穩定排序和不穩定排序:假設Ki=Kj(1≤i≤n,1≤j≤n,i≠j),若在排序前的序列中Ri領先於Rj(即i<j),經過排序後得到的序列中Ri仍領先於Rj,則稱所用的排序方法是穩定的 ;反之,當相同關鍵字的領先關係在排序過程中發生變化者,則稱所用的排序方法是不穩定的。

快速排序(QuickSort

快速排序是一個就地排序,分而治之,大規模遞迴的演算法。從本質上來說,它是歸併排序的就地版本。快速排序可以由下面四步組成。

(1)如果不多於1個數據,直接返回。

2)一般選擇序列最左邊的值作為支點資料。

3)將序列分成2部分,一部分都大於支點資料,另外一部分都於支點資料。 

歸併排序(MergeSort 

歸併排序先分解要排序的序列,從1分成2,2分成4,依次分解,解到只有1個一組的時候,就可以排序這些分組,然後依次合併回原來的序列中,這樣就可以排序所有資料。合併排序比堆排序稍微快一

點,但是需要比堆排序多一倍的記憶體空間,因為它需要一個額外的陣列 

堆排序(HeapSort

堆排序適合於資料量非常大的場合。堆排序會將所有的資料建成一個堆,最大的資料在堆頂,然後將堆頂資料和序列的最後一個數據交換。接下來再次重建堆,交換資料,依次下去,就可以排序所有的資料。

4插入排序(InsertSort

插入排序通過把序列中的值插入一個已經排序好的序列中,直到該序列的結束。插入排序是對氣泡排序的改進。它比氣泡排序快2倍。一般不用在資料大於1000的場合下使用插入排序,或者重複排序超過

200資料項的序列。

5氣泡排序(BubbleSort

氣泡排序是最慢的排序演算法。在實際運用中它是效率最低的演算法。它通過一趟又一趟地比較陣列中的每一個元素,使較大的資料下沉,較小的資料上升。它是O(n^2)的演算法。

交換排序(ExchangeSort)和選擇排序(SelectSort

這兩種排序方法都是交換方法的排序演算法,效率都是O(n2)。在實際應用中處於和氣泡排序基本相同的地位。