1 package com.berry.algorithm.sort;
2
3 /**
4 * Created by berry-h on 17-1-17.
5 */
6 public class ShellSort implements Sort{
7
8 /**
9 *希尔排序
10 * @param array
11 */
12 @Override
13 public void sort(int[] array) {
14
15 int increment = array.length;
16 int i, j;
17
18 do{
19 //计算增量
20 increment = increment/3 + 1;
21 //从等于增量值的索引处开始循环,与减去增量值得到的索引对应的值比较
22 for(i = increment;i < array.length;i++){
23 if(array[i - increment] > array[i]){
24 int temp = array[i];
25 //以增量作为间隔并替换
26 for(j = i - increment;j >= 0 && array[j] > temp;j = j - increment){
27 array[j + increment] = array[j];
28 }
29 array[j + increment] = temp;
30 }
31 }
32
33 }while(increment > 1);
34
35 }
36 }