SLy

永远年轻,永远憧憬,永远热爱。


  • 首页

  • 归档

  • 影集

  • 关于

  • 搜索
Thread Spring JAVA JVM 游记 计算机基础 MySQL 排序算法 PMP 情感 摄影 博客

希尔排序

发表于 2020-12-06 | 分类于 排序算法 | 0 | 阅读次数 503
package com.sort.admin;

public class ShellSort {

    /**
     * 希尔排序 - O(n^1.3)
     *
     * 使用Knuth序列进行希尔排序,每次对Knuth间隔进行插入排序
     *
     * @param arr 需要排序的数组
     *
     */
    public static void sort(int[] arr) {
        if (arr == null || arr.length < 2) {
            return;
        }

        // 间隔序列使用Knuth序列
        int h = 1;
        while (h <= arr.length / 3) {
            h = h * 3 + 1;
        }

        for (int gap = h; gap > 0; gap = (gap - 1) / 3) {

            // 按照当前间隔使用插入排序
            for (int i = gap; i < arr.length; i++) {
                for (int j = i; j > gap - 1; j -= gap) {
                    if (arr[j] < arr[j - gap]) {
                        swap(arr, j, j - gap);
                    }
                }
            }
        }
    }

    public static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    public static void print(int[] arr) {
        System.out.println("arr -- >");
        for (int j : arr) {
            System.out.print(j + " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        int[] arr = {9, 6, 11, 3, 5, 12, 8, 7, 10, 15, 14, 4, 1, 13, 2};

        print(arr);
        sort(arr);
        print(arr);

    }
}

  • 本文作者: SLy
  • 本文链接: https://sly.plus/archives/shellsort
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议。转载请注明出处!
# Thread # Spring # JAVA # JVM # 游记 # 计算机基础 # MySQL # 排序算法 # PMP # 情感 # 摄影 # 博客
插入排序
MySQL调优
  • 文章目录
  • 站点概览
SLy

SLy

永远年轻,永远憧憬,永远热爱。

37 日志
12 分类
12 标签
RSS
Github E-mail
Creative Commons
© 2020 — 2025 SLy