shell排序的c實現

2021-06-10 09:14:17 字數 745 閱讀 1749

shell排序是插入排序的一種,是插入排序

的一種高速而穩定的改進版本,

先取乙個小於n的整數d1作為第乙個增量

,把檔案的全部記錄分成(n除以d1)個組。所有距離為d1的倍數的記錄放在同乙個組中。先在各組內進行直接插入排序;然後,取第二個增量d2

該方法實質上是一種分組插入方法。

下面是c實現與執行結果

#include#include#include#include#includevoid shell_sort(int *datap, uint8_t flag, uint8_t length)

datap[m+flag] = key; }}

}void sort(int *datap, uint8_t length)

}int main()

; int i = 0;

printf("before sort:\n");

for(i = 0; i < 10; i++)

printf("\n");

sort(datap, 10);

printf("after sort:\n");

for(i = 0; i < 10; i++)

printf("\n");

return 0;

}

執行結果:

JAVA實現Shell排序

shell排序可以理解為插入排序的變種,它充分利用了插入排序的兩個特點 1 當資料規模小的時候非常高效。2 當給定資料已經有序時的時間代價為o n 所以,shell排序每次把資料分成若干塊,來使用插入排序,而且之後在這若干個小塊排好序的情況下把它們合成大一點的小塊,繼續使用插入排序,不停的合併小塊,...

shell實現簡單的陣列排序

int nums 8 int length 8 for int i 0 i for int i 0 ij 0 i 內層迴圈計數 t 0 用於兩數字交換臨時變數 nums 1 2 1 3 4 2 5 6 用於測試的陣列 length 陣列長度 外層迴圈開始 while i lt length do 內...

Shell排序演算法及C語言實現

shell排序演算法是d.l.shell於1959年發明的,其基本思想是 先比較距離遠的元素,而不是像簡單交換排序演算法那樣先比較相鄰的元素。這樣可以快速減少大量的無序情況,從而減輕後續的工作。被比較的元素之間的距離逐步減少,直到減少為1,這時排序變成了相鄰元素的互換。該方法實質上是一種分組插入排序...