資料結構排序演算法 shell排序

2021-09-29 15:26:35 字數 1112 閱讀 9252

希爾排序(sell排序),是改進的直接插入排序。

思想將整個序列分為多個子串行,每個子串行分別進行直接插入排序,等每個子串行中的資料基本有序時,再

對全體記錄進行一次直接插入排序。

排序過程:

排序過程

第一趟:

將16個元素分為8個子序列,每兩個元素作為乙個序列。每相隔8個元素的兩個元素組為乙個子串行。從第

乙個子串行的第二個元素開始排序。第一次排序之後,36和59互相交換位置。

第二趟:

分為4個子序列,每隔4個元素,放在乙個子串行中。第乙個子串行:36、28、59、65。每個子串行的第一

個元素不用排,從每個子串行的第二個元素開始插入排序。28和36比較、14和20比較、23和11比較、15

和13比較。

59和36、28的有序序列中插入、98和20、14子串行中插入排序、…

第三趟:

分為兩個子串行,同乙個序列中的相鄰元素間隔是2,依舊是從每個序列的第二個元素進行排序。

第四趟:

進行直接插入排序。

("開始!");

int d = stu.length /2;

// 當增量為1的時候,便是最後一次插入排序了,

while

(d >0)

}}d = d /2;

} system.out.

println

("結束!");

資料結構 排序 shell排序

首先,希爾排序適用於待排序列關鍵有序。接下來一步步 shell排序 我為了方便理解內部操作。我先把 輸出整理下。include includeusing namespace std 同樣第乙個是哨兵,用來存放比較的內容。畢竟shell排序就是公升級版的直接插入排序 含暫存單元的陣列v int tem...

資料結構 排序演算法 快速排序

演算法描述 快速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個專案要 n log n 次比較。在最壞狀況下則需要 n2 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 n log n 演算法更快,因為它的內部迴圈 inner loop 可以在大部分的架構上很有效率地...

資料結構 排序 選擇排序演算法

選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。選擇排序的主要優點與資料移動有關。如果某...