希爾排序法(縮小增量法)

2022-05-15 06:43:02 字數 1018 閱讀 5867

2016-10-25 16:51:49

首先,要明白希爾排序法是什麼。它是一種改進版的直接插入法,它是將整個無序列分割成若干小的子串行分別進行插入排序的方法。

1 #include23//

希爾排序法

4void shell_sort(int a,int

n);5

intmain()

614 shell_sort(a,5

);15 printf("

after number:\n");

16for(i=1;i<6;i++)

1720 printf("\n"

);21}22

23void shell_sort(int a,int

n)24

39 a[j+d]=a[0

];40

}41 d=d/2;42

}43 }

這就和直接插入法非常類似了。因此其也有另一種形式。

1 #include23//

希爾排序法

4void shell_sort(int a,int

n);5

intmain()

614 shell_sort(a,5

);15 printf("

after number:\n");

16for(i=1;i<6;i++)

1720 printf("\n"

);21}22

23void shell_sort(int a,int

n)24

39 a[i]=a[0

];40

}41 d=d/2;42

}43 }

發現兩次while迴圈後,a[0]複製給誰的異同了嗎?

兩個不一樣,但是是為什麼呢?

其實,最後a[0]賦予的值和最後乙個相同,即與a[i]=a[i-d]中的a[i-d]相同。

插入排序 C語言 希爾排序 縮小增量法

希爾排序是希爾 donald shell 於1959年提出的一種排序演算法。希爾排序也是一種 插入排序 它是簡單插入排序經過改進之後的乙個更高效的版本,也稱為 縮小增量排序 適合於資料量中等大小的排序 成千上萬的資料量 同時該演算法是衝破o n 2 的第一批演算法之一。基本思想 分割成若干個較小的子...

排序五之希爾排序(縮小增量排序)

shell sort 氣泡排序演算法,選擇排序演算法和插入排序演算法的思路比較直觀,但排序的效率都比較低。對於遇到大量的資料需要排序時,shell排序便是其他更為高效的演算法之一。sell排序演算法嚴格來說基於插入排序的思想,又稱希爾排序或縮小增量排序。shell排序的基本流程如下 1 將有n個元素...

希爾排序法

一種算是優化的插入排序 一般是每次從半數之後的範圍進行插入,這樣可以減少總的交換量。達到快速的效果 但是最後一定要讓開始的位置變成1 也就是g陣列的最後乙個一定要是1 include using namespace std long long g 10000005 long long a 10000...