希尔排序
排序介绍:
代码实现:
package com.hy.sort.shellsort; /** * @author hanyong * @date 2020/12/4 0:31 */ public class ShellSort { //核心代码---开始 public static void sort(Comparable[] arr) { int j; for (int gap = arr.length / 2; gap > 0; gap /= 2) { for (int i = gap; i < arr.length; i++) { Comparable tmp = arr[i]; for (j = i; j >= gap && tmp.compareTo(arr[j - gap]) < 0; j -= gap) { arr[j] = arr[j - gap]; } arr[j] = tmp; } } } //核心代码---结束 public static void main(String[] args) { Integer [] arr={9,8,1,19,0}; ShellSort.sort(arr); for( int i = 0 ; i < arr.length ; i ++ ){ System.out.print(arr[i]); System.out.print(' '); } } } package com.hy.sort.shellsort; /** * @author hanyong * @date 2020/12/4 0:34 */ public class SelectSort02 { public static void shellSort2(int[] arr) { // 增量gap, 并逐步的缩小增量 for (int gap = arr.length / 2; gap > 0; gap /= 2) { // 从第gap个元素,逐个对其所在的组进行直接插入排序 for (int i = gap; i < arr.length; i++) { int j = i; int temp = arr[j]; if (arr[j] < arr[j - gap]) { while (j - gap >= 0 && temp < arr[j - gap]) { //移动 arr[j] = arr[j - gap]; j -= gap; } //当退出while后,就给temp找到插入的位置 arr[j] = temp; } } } } }