原文地址http://www.cnblogs.com/liukemng/p/3723976.html
希爾排序是由D.L.Shell于1959年提出的,所以稱為希爾排序。希爾排序又稱縮小增量排序,是插入排序的一種改進。
基本思想:希爾排序是基于插入排序的以下特點:待排序的序列元素數(shù)量越少排序速度越快;待排序序列的元素基本有序時排序速度越快;基于以上思想將待排序序列分為多個子序列分別進行插入排序,然后減少子序列的個數(shù)重新進行插入排序,重復以上過程,直至待排序的序列只有一個再進行一次插入排序,則排序完成序列有序。
代碼實現(xiàn):
/// <summary>/// 希爾排序/// </summary>/// <param name="intArray"></param>/// <param name="length"></param>public static void ShellSort(int[] intArray, int length){ int gap, i, j, temp; for (gap = length / 2; gap >= 1; gap = gap / 3+1) { for(i=gap;i<length;i++) { temp=intArray[i]; for(j=i-gap;j>=0&&intArray[j]>temp;j-=gap) intArray[j+gap]=intArray[j]; intArray[j+gap]=temp; } if(gap==1) break; }}需說明的是不同的間隔gap選擇會對排序的效率有不同的影響,且不容易確定最佳的間隔gap,感興趣的朋友可以搜索相關資料作為參考。
以上就是希爾排序的內容。
新聞熱點
疑難解答