社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
1.希尔排序是它的发明者DonaldShell名字命名的,没有什么高大上的概念.
2.希尔排序是插入排序的改进版,实现简单,对于中等规模数组的性能表现还不错
可以看出当gap<1时,说明排序完毕.
public static void shellSort(int[] arr){
//每一趟的增量为gap,当gap=0时说明排序完毕
for(int gap = arr.length/2;gap >0 ;gap = gap/2){
//对每组进行插入排序,这里从第1组开始,即3,8这一组
for(int i = gap;i< arr.length;i++){
//记录当前位置
int index = i;
//当前位置数值,即待插入数据
int insertval = arr[index];
//待插入数据和已排序序列逐个比较
while(index-gap>=0 && insertval<arr[index-gap]){
arr[index] = arr[index-gap];
//和插入排序一样的道理,只不过这里要减去增量,而不是-1
index = index - gap;
}
//退出循环说明已经找到了位置
arr[index] = insertval;
}
System.out.println(Arrays.toString(arr));
}
}
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!