資料結構系列( )排序

2021-07-31 04:20:51 字數 1375 閱讀 9946

排序是指將一組資料,按照特定規則調換位置,使資料具有某種順序關係。

排序的移動方式可分為直接移動和邏輯移動。

直接移動是直接交換儲存資料的位置,邏輯移動是改變指向這些資料的輔助指標的值。

排序的分類

排序通常按照資料量的多寡和所使用的記憶體可分為內部排序和外部排序,資料量小則可以全部載入到記憶體來進行的排序稱為內部排序。

內部排序法

氣泡排序法

原理是從第乙個元素開始,比較相鄰元素的大小,若大小順序有無,則對調再進行下乙個元素的比較,就彷彿氣泡逐漸從水底逐漸冒公升到水面一樣。如此掃瞄過一次之後就可以確保最後乙個元素是位於正確的順序。接著再逐步進行第二次掃瞄,指導完成所有的排序關係為止。

選擇排序法

開始在所有資料中挑選乙個最值放在第乙個位置,再從第二項開始挑選乙個最值放在第二個位置,直到完成排序為止。

插入排序法

是將陣列中的元素,逐一與已排序好的資料進行比較,前兩個元素先排好,再將第三個元素插入適當的位置,所以這三個元素仍然是已排好的,接著再將第四個元素加入,重複此步驟,直到排序完成為止。

希爾排序法

當原始記錄的鍵值大部分已排好序的情況下,插入排序發會非常有效率,d.l.shell將資料區分成特定間隔的幾個小區快,以插入排序法拍完區域內的資料後再減少間隔的距離。

合併排序法

通常是外部儲存器最常用的排序方法,工作原理乃是針對已排好序的兩個或兩個以上的檔案,通過合併的方式,將其組合成乙個大的且已排好序的檔案,步驟如下:

1)將n個長度為1的鍵值,成對地合併成n/2個長度為2的鍵值組。

2)將n/2個長度為2的鍵值組,成對地合併成n/4個長度為4的鍵值組。

3)將鍵值組不斷地合併,直到合併成一組長度為n的鍵值組為止。

快速排序法

快速排序法又稱分割交換排序法,是目前公認的最佳的排序法,先在資料中找到乙個虛擬的中間值,並按此中間值將所有打算排序的資料分為兩部分,其中小於中間值的資料放在左邊,而大於中間值的資料放在右邊,再以同樣的方式分別處理左右兩邊的資料,直到排完為止。

基數排序法

基數排序法按比較的方向可分為最高位優先和最低為優先兩種,msd法是從左邊的位數開始比較,而lsd是從最右邊的位開始比較。

外部排序法

1.直接合併排序法

2.k路合併法

3.多相合併法

資料結構排序系列之選擇排序(三)

選擇排序有直接選擇排序和堆排序。基本思想 每一趟在待排序的記錄中選出關鍵字最小的元素,依次存放在已排好序的序列的最後。直到所有元素都好排好序為止。演算法思想 每次從待排序的無序區中選出關鍵字最小的元素,將該元素與該無序區中的第乙個元素交換位置。初始時,從 0 n 1 選出乙個關鍵字最小的元素,與r ...

資料結構系列 堆與堆排序

堆是一種特殊的樹結構,通常將按照一定順序排列好的樹結構稱之為堆。堆是電腦科學中一類特殊的資料結構的統稱。堆通常是乙個可以被看做一棵樹的陣列物件。堆總是滿足下列性質 將根節點最大的堆叫做最大堆或大根堆,根節點最小的堆叫做最小堆或小根堆。常見的堆有二叉堆 斐波那契堆等。堆的定義如下 n個元素的序列當且僅...

資料結構 排序演算法系列總結

目錄 1 空間複雜度 2 穩定性 3 執行時間 4 目前預設的sort內建函式排序函式 5 六種常用排序方法 空間複雜度產生的原因有兩個 重新定義了一塊空間用於儲存資料 遞迴產生了棧空間 氣泡排序 選擇排序 堆排序和插入排序屬於原地實現排序,因此空間複雜度為常數級別 快速排序,在演算法中雖然沒有使用...