希爾排序是插入排序的優化版本,實現原理:將未知數組分為以gap為間隔的n個序列(gap的初值通常取需要排序數列的長度,每次排序之後取(gap/3+1)),然後將這n個序列中的數進行比較,例如先對比序列1和序列2中的第乙個數字,若序列2中的第乙個小於學列1中的第乙個則更換兩個數的位置,然後比較序列2和序列3中的第乙個數字,以此類推,直到gap的數值為1時,排序結束。實現**:
/*
* 希爾排序(shell sort)
* 1.希爾排序為插入排序的優化版,具體原理:將陣列分為以gap為間隔的數個序列,
* 再分別對這數個序列的每個數字進行比較,(gap一般取(gap/3+1),第一次
* gap = length/3+1)
*/void shell_sort(int *nums,int len)
int gap = len;
while(gap > 1)}}
}}
學習排序演算法4 希爾排序
此 需要用到我前面三個部落格的部分 因為此處將希爾排序和選擇排序,插入排序進行了執行時間的比較 希爾排序 思想 是一種對插入排序的改進,因為插入排序每次交換只能交換相鄰的元素,元素挪到自己正確的位置可能需要移動很多次。所以希爾排序交換不相鄰的元素,以對陣列進行區域性排序,並最終用插入排序將區域性有序...
排序演算法總結 4 希爾排序
插入排序適合資料量較小或者部分有序的序列排序,但是當序列的最小值在最右端時,需要比較n 1次並且移動n 1次才能將最小數插入序列的最左端。希爾排序對直接插入排序做了改進。在插入排序的基礎上,將序列分組,利用了插入排序對資料量較小和部分有序序列高效的性質。希爾排序首先將序列以 增量 h分成h組,分組情...
排序演算法之(4) 希爾排序
希爾排序 shell sort 是d.l.shell於1959年提出來的一種排序演算法,在這之前排序演算法的時間複雜度基本都是o n2 o n 2 的,希爾排序演算法是突破這個時間複雜度的第一批演算法之一。我們前一節講的直接插入排序,應該說,它的效率在某些時候是很高的,比如,我們的記錄本身就是基本有...