Fork me on GitHub

希尔排序

基本思想

在要排序的一组数中,根据某一增量分为若干子序列,并对子序列分别进行插入排序。
然后逐渐将增量减小,并重复上述过程。直至增量为1,此时数据序列基本有序,最后进行插入排序。

java代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public static void shell_sort(int array[],int lenth){

int temp = 0;
int incre = lenth;

while(true){
incre = incre/2;

for(int k = 0;k<incre;k++){ //根据增量分为若干子序列

for(int i=k+incre;i<lenth;i+=incre){

for(int j=i;j>k;j-=incre){
if(array[j]<array[j-incre]){
temp = array[j-incre];
array[j-incre] = array[j];
array[j] = temp;
}else{
break;
}
}
}
}

if(incre == 1){
break;
}
}
}