希爾排序算是插入排序的一種高階進化版,雖然希爾排序的實現比較簡單,但是它的原理證明非常複雜,由於能力有限,故沒有涉及。
我直接上**吧。
#include
intcontainer[1000001];
int main(void)
int increment, temp;
for(increment = n / 2;increment > 0;increment /= 2)
else
}container[j] = temp;}}
for(i = 0;i < n;i++)
return
0;}
以下是對希爾排序中的一些我的理解:
①希爾排序中定義了乙個增量序列的東西(即increment), increment限定了插排的次數(可以理解為increment將總數分為若干個陣列,比如說, 0,0 + increment,0 + 2 * increment…..是第乙個陣列的成員, 1, 1 + increment…..是第二個陣列的成員,等,然後對這若干個陣列插入排序),因此不同的增量序列直接導致了希爾排序效能的好壞,一般來說使用的都是希爾增量,即每次自身除以2, 直到increment = 1進行一次完全的插入排序。
②第二個迴圈中i = increment,因為陣列是從0開始儲存的,其實i此時所指向的是第乙個陣列中的第二個數,從這裡開始就跟插入排序基本相同了。
希爾排序C 實現
shell sort 希爾排序是一種對直接插入排序的改進方法,使用直接插入排序對於乙個基本有序的數列進行排序時,內部迴圈的次數會明顯減少,因此可以減小時間複雜度 希爾排序就是先使數列基本有序,然後再直接插入排序,減小插入排序的時間複雜度 希爾排序首先按一定增量進行插入排序,再逐步縮減增量,當這一增量...
希爾排序 java實現
先將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序,待整個序列中的記錄 基本有序 時,再對全體記錄進行依次直接插入排序。操作方法 選擇乙個增量序列t1,t2,tk,其中ti tj,tk 1 按增量序列個數k,對序列進行k 趟排序 每趟排序,根據對應的增量ti,將待排序列分割成若干長度為m...
c 實現希爾排序
希爾排序 shell sort 也稱為遞減增量排序演算法,是插入排序的一種高速而穩定的改進版 本。希爾排序是基於插入排序的以下兩點性質而提出改進方法的 1.插入排序在對幾乎已經排好序的資料操作時,效率高,即可以達到線性排序的效率 2.但插入排序一般來說是低效的,因為插入排序每次只能將資料移動一位。希...