基礎演算法系列 之希爾排序
希爾排序和上文中的直接插入一樣,都是插入排序的一種。之前直接插入排序的缺點是假如小數在靠後的位置,則其前面的數都要前提,希爾排序則是先取步長,這樣可以減少移動的次數。
希爾排序的準則就是“先取步長,再分小組;以組為準,組內排序”。基本程式碼如下:
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
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- PHP基礎演算法之快速排序法PHP演算法排序
- 【譯】Swift演算法俱樂部-希爾排序Swift演算法排序
- 【演算法】希爾排序的實現演算法排序
- Java基礎系列—List排序Java排序
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- 希爾排序排序
- 老生常談之 PHP 基礎排序演算法PHP排序演算法
- PHP基礎演算法之選擇排序法PHP演算法排序
- PHP基礎演算法之氣泡排序法PHP演算法排序
- #排序演算法#【2】直接插入排序、希爾排序排序演算法
- python實現希爾排序演算法Python排序演算法
- C#演算法----(三)希爾排序 (轉)C#演算法排序
- 演算法基礎:排序演算法:選擇排序演算法排序
- 演算法(二)初等排序前篇[插入和希爾排序]演算法排序
- 演算法與資料結構之基礎排序演算法演算法資料結構排序
- 希爾排序(一)排序
- 希爾排序(二)排序
- Java希爾排序Java排序
- 理解希爾排序排序
- java 希爾排序Java排序
- javascript希爾排序演算法程式碼例項JavaScript排序演算法
- Python 一網打盡<排序演算法>之從希爾排序演算法的分治哲學開始Python排序演算法
- 希爾排序——重溫排序(二)排序
- C#資料結構與演算法系列(二十一):希爾排序演算法(ShellSort)C#資料結構演算法排序
- C++希爾排序C++排序
- 希爾排序(C++)排序C++