复习之希尔排序

来源:互联网 发布:hexo源码 编辑:程序博客网 时间:2024/05/02 00:36

继续上图和代码微笑





package com.lyj.sort;public class ShellSort {    /**     * @param args     */    public static void main(String[] args) {        int[] array = { 76, 81, 60, 22, 98, 33, 12, 1, 19 };        // 排序前        System.out.print("排序前:     ");        for (int i : array) {            System.out.print(i + " ");        }        System.out.println();        // 排序        shellSort(array);        // 排序后        System.out.print("排序后:     ");        for (int i : array) {            System.out.print(i + " ");        }    }    private static void shellSort(int[] array) {        int d = array.length;        while ((d = d / 2) != 0) {            for (int i = 0; i < d; i++) {  // 按增量d分组                int h = i;                // 以下相当于插入排序                for (int j = 0; j < (array.length / d) - 1; j++) { // 每组数据的数量                    for (int k = h; k >= 0; k--) {           // 排序                        if (array[k] > array[k + d]) {                            int temp = array[k];                            array[k] = array[k + d];                            array[k + d] = temp;                        }                    }                    h = h + d;                }            }            System.out.print("增量d=" + d + "的排序    ");            for (int in : array) {                System.out.print(in + " ");            }            System.out.println();        }    }}