1. 程式人生 > >希爾排序 java實現

希爾排序 java實現

希爾排序屬於插入排序的一種,也稱為縮小增量法,是插入排序的一種改進版本,其基本思想是,先取一個小於n的整數i1作為第一個增量,所有距離為a的記錄放在同一組,把陣列的全部記錄分成了a組子序列,再對各組子序列進行直接插入排序,然後,取第二個增量i2作為第二個增量,重複分組和排序,直到最後一個增量為1時,對所有元素進行直接插入排序。希爾排序是對直接插入排序演算法的優化,實質上是一種分組插入排序演算法。

程式碼

package demo;

import java.util.Arrays;

//希爾排序
public class ShellSort {
    public static
void main(String[] args) { int[] data = new int[] {18,32,3,6,21,42,35,27,34,89,53}; shellSort(data); } private static void shellSort(int[] data) { //此處迴圈增量 5、2、1 for (int increment = data.length / 2; increment > 0; increment /= 2) { for
(int i = increment; i < data.length; i++) { int j=0; int temp = data[i]; for (j = i; j >= increment; j -= increment) { if(temp > data[j - increment]){ data[j] = data[j - increment]; }else
{ break; } } data[j] = temp; } System.out.println("增量為"+increment+"時排序結果為:"+Arrays.toString(data)); } } }

執行結果:
這裡寫圖片描述