基礎演算法系列 之希爾排序
希爾排序和上文中的直接插入一樣,都是插入排序的一種。之前直接插入排序的缺點是假如小數在靠後的位置,則其前面的數都要前提,希爾排序則是先取步長,這樣可以減少移動的次數。
希爾排序的準則就是“先取步長,再分小組;以組為準,組內排序”。基本程式碼如下:
public static void shellSort(int[]arr){
for(int d=arr.length/2;d>0;d/=2){ //遍歷所有步長
for(int i=d;i<arr.length;i++){ //遍歷所有元素
for(int j=i-d;j>=0;j-=d){ //遍歷本組元素
if(arr[j]>arr[j+d]){
if(arr[j]>arr[j+d]){
int temp=arr[j];
arr[j]=arr[j+d];
arr[j+d]=temp;
}
}
}
}
}
}
優點是可以將右邊小數和左邊大數快速移動到相應位置。
相關文章
- PHP 排序演算法之希爾排序PHP排序演算法
- 排序演算法__希爾排序排序演算法
- 【排序演算法】- 希爾排序排序演算法
- 程式猿修仙之路--演算法之希爾排序演算法排序
- 排序演算法:Java實現希爾排序排序演算法Java
- 希爾排序排序
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- 【演算法】希爾排序的實現演算法排序
- python實現希爾排序演算法Python排序演算法
- 理解希爾排序排序
- Java希爾排序Java排序
- 希爾排序(一)排序
- 希爾排序(二)排序
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- 希爾排序(Shell Sort)排序
- C++希爾排序C++排序
- 希爾排序(C++)排序C++
- 希爾排序——重溫排序(二)排序
- 【譯】Swift演算法俱樂部-希爾排序Swift演算法排序
- Python 一網打盡<排序演算法>之從希爾排序演算法的分治哲學開始Python排序演算法
- 【排序】插入類排序—(折半)插入排序、希爾排序排序
- 基礎演算法之排序演算法演算法排序
- 資料結構和演算法面試題系列—排序演算法之基礎排序資料結構演算法面試題排序
- 夯實基礎:排序演算法之堆排序排序演算法
- python演算法與資料結構-希爾排序(35)Python演算法資料結構排序
- C#資料結構與演算法系列(二十一):希爾排序演算法(ShellSort)C#資料結構演算法排序
- 淺解前端必須掌握的演算法(四):希爾排序前端演算法排序
- (建議收藏)2020最新排序演算法總結:冒泡、選擇、插入、希爾、快速、歸併、堆排序、基數排序排序演算法
- JavaScript希爾排序簡單介紹JavaScript排序
- rust-algorithms:14-希爾排序RustGo排序
- 第二章 :查詢與排序-------希爾排序排序
- 【小小前端】前端排序演算法第二期(繞人的希爾排序)前端排序演算法
- PHP基礎演算法之快速排序法PHP演算法排序
- Python八大演算法的實現,插入排序、希爾排序、氣泡排序、快速排序、直接選擇排序、堆排序、歸併排序、基數排序。Python演算法排序
- PHP基礎演算法之選擇排序法PHP演算法排序
- PHP基礎演算法之氣泡排序法PHP演算法排序
- 老生常談之 PHP 基礎排序演算法PHP排序演算法
- Java基礎系列—List排序Java排序