对于一个int数组,请编写一个希尔排序算法,对数组元素排序。
给定一个int数组A及数组的大小n,请返回排序后的数组。保证元素小于等于2000。
测试样例:
[1,2,3,5,2,3],6
[1,2,2,3,3,5]
解题思路 : 依次缩小步长直至步长为1
import java.util.*;
public class ShellSort {
public int[] shellSort(int[] A, int n) {
// write code here
if(A==null||n<2)
return A;
int feet = n/2;
int index = 0;
while(feet>0){
for(int i=feet;i<n;i++){
index = i;
while(index>=feet){
if(A[index]<A[index-feet]){
int tem = A[index];
A[index] = A[index-feet];
A[index-feet] = tem;
index-=feet;
}else{
break;
}
}
}
feet = feet/2;
}
return A;
}
}