package com.zjp.start.sort; import java.util.Arrays; /** * 希尔排序: * 先将序列分成较多个子序列分别进行排序,再分成较少个子序列分别进行排序,直到最后为一个序列排序。 */ public class ShellSort { public static void main(String[] args) { int[] arr = {49, 38, 65, 97, 76, 13, 27, 50}; shellSort(arr); System.out.println(Arrays.toString(arr)); } private static void shellSort(int[] arr) { //定义增量 int increment = arr.length / 2; while (increment >= 1) { //循环遍历每一个子序列 for (int i = 0; i < increment; i++) { //插入排序 for (int j = i + increment; j < arr.length; j += increment) {//j为选中元素的位置 int k = j;//k为要插入元素的位置 int tmp = arr[j]; while (k >= increment && arr[k - increment] > tmp) { //后移元素 arr[k] = arr[k - increment]; k -= increment; } //插入元素 arr[k] = tmp; } } //减小增量 increment = increment / 2; } } }
java常用排序算法之希尔排序
最新推荐文章于 2020-02-11 13:41:44 发布