希尔排序
目录
希尔排序
-
希尔排序就是插入排序的升级版,普通的插入排序只是用于小规模数组或者比较有序的数组
-
希尔排序交换不相邻的元素以对数组的局部进行排序,根本思想还是插入排序
-
希尔排序是让间隔step的元素有序,刚开始是h = len / 2,然后 h = h / 2 / 2,一直这样缩小下去,直到为1,此时数组就是有序的了
-
代码实现
import java.util.Arrays; /** * @Description: 希尔排序 * @Author: LinZeLiang * @Date: 2020-10-06 */ public class ShellSort { public static void main(String[] args) { int[] a = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; shellSort(a); System.out.println(Arrays.toString(a)); } /** * @param a 待排序数组 */ public static void shellSort(int[] a) { //定义变量,进行分组,初始化分为a.length/2组, for (int h = a.length / 2; h > 0; h /= 2) { //将每一组进行插入排序 for (int i = h; i < a.length; i++) { int temp = a[i]; int j; //j>=0的判断要在a[j]>temp的判断前面,因为如果位置反了,就会导致索引为负数,抛出异常 for (j = i - h; j >= 0 && a[j] > temp; j -= h) { //如果改组的前一位大于temp,那么就将后移一位 a[j + h] = a[j]; } //直到找到小于temp,才将temp插入该位置前一个 a[j + h] = temp; } } } }
我走得很慢,但我从不后退!

浙公网安备 33010602011771号