希尔排序
基本是将数组进行分组,在小分组内进行插入排序,争取将小的元素放到前面,大元素排到后面;
但是根据分组区间的规则不同时,会达到不同的效果.
class Solution {
public int[] sortArray(int[] nums) {
int n = nums.length;
//希尔排序分组思想;
//这里分组大小每次取一半;直到1;
for(int group = n/2;group>0;group/=2){
//小组;
for(int minG=0; minG<group; minG++){
//插入排序使用;
for(int i = minG+group;i<n;i+=group){
//定义的临时第三方变量dsf;
int dsf = nums[i];
int j = i;
for(;j-group>=0;j-=group){
if(nums[j-group]>dsf){
nums[j] = nums[j-group];
}else{
break;
}
}
//最终插入排序将当前值放入指定位置;
nums[j] = dsf;
}
}
}
return nums;
}
}