希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序.
public int[] shellSort( int[] nums) {
int gap=nums.length;
while(gap>1){
gap=gap/3+1;
for(int i=0;i<nums.length-gap;i++){
int end=i;
int key=nums[end+gap];
while(end>=0&&nums[end]>key){
nums[end+gap]=nums[end];
end-=gap;
}
nums[end+gap]=key;
}
}
return nums;
}