试题
考点

数据结构-排序-希尔排序

面5笔5

希尔排序

前往“校招VIP”小程序,刷题更快
最新校招难题刷题,快来进刷题群吧
解答

思路:

直接插入排序的一种高速的改进版本

1.将待排序数组按照指定的增量进行分割,然后对每个子序列进行直接插入排序(三重循环)

2.缩小增量,重复分割和排序,直到增量为1

3.增量值的选择:

最常用的增量是 第一轮为数组长度的1/2, 后面每轮为原先的1/2直到为1

核心代码
public static void shellSort(int[] arrays) {
 //增量每次都/2 
for (int step = arrays.length / 2; step > 0; step /= 2) { 
//从增量那组开始进行插入排序,直至完毕 

for (int i = step; i < arrays.length; i++) { 

int j = i; int temp = arrays[j];
  // j - step 就是代表与它同组隔壁的元素

 while (j - step >= 0 && arrays[j - step] > temp) {
 arrays[j] = arrays[j - step];
 j = j - step; 


arrays[j] = temp; 
}
 } 
}


评论

加载更多