1、希尔排序介绍
希尔排序也是一种插入排序,只不过它比插入排序要更高效。
2、基本思想
把记录按下标的一定分量进行分组,然后每组进行插入排序。随着增量越来越少,每组的数据就越来越多,当增量为1时,也就排好了序。
3、希尔排序示意图

4、代码示例
方法一:交换法
public class ShellSort1 {
public static void main(String[] args) {
int arr[] = new int[]{1, 5, 2, 6, 7, 4};
shellSort(arr);
for (int i : arr) {
System.out.println(i);
}
}
public static void shellSort(int[] arr) {
int temp = 0;
for(int gap = arr.length/2; gap >= 1; gap /= 2) {
for(int i = gap; i < arr.length; i++) {
for(int j = i - gap; j > 0; j -= gap) {
if(arr[j+gap] < arr[j]) {
temp = arr[j+gap];
arr[j+gap] = arr[j];
arr[j] = temp;
}
}
}
}
}
}
方法二:移位法
public static void shellSort2(int[] arr) {
int temp = 0;
for(int gap = arr.length/2; gap > 0; gap /= 2) {
for(int i = gap; i < arr.length; i++) {
int j = i;
temp = arr[j];
if(arr[j] < arr[j-gap]) {
while(j-gap >= 0 && temp < arr[j-gap]) {
arr[j] = arr[j-gap];
j -= gap;
}
arr[j] = temp;
}
}
}
}
版权声明:本文为weixin_45726569原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。