Carson带你学数据结构:希尔排序,复杂度最高的排序算法

Posted Carson带你学Android

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Carson带你学数据结构:希尔排序,复杂度最高的排序算法相关的知识,希望对你有一定的参考价值。


目录


1. 简介

  • 也称:缩小增量 排序,属于 内排序算法中 的 插入排序类别
  • 是对 直接插入排序算法 的优化和升级

2. 算法原理


3. 算法示意图

步骤1:初始状态

步骤2:跳跃分割 & 排序


4. 算法实现

public class ShellSort {
    /**
     * 希尔排序
     */
    public static void shellSort(int[] srcArray) {

        int j = 0;
        int temp = 0;

        // 增量序列值 计算公式 = 前1个增量序列值 / 2,直到增量序列值 = 1为止
        // 第1个值 = 初始值 = 序列长度 / 2
        for (int increment = srcArray.length / 2; increment > 0; increment /= 2) {

            // 根据增量值选取子序列
            for (int i = increment; i < srcArray.length; i++) {

                temp = srcArray[i];

                // 对子序列执行直接插入排序,即 循环两两比较子序列的值
                for (j = i - increment; j >= 0; j -= increment) {

                    if (temp < srcArray[j]) {

                        // 将小的元素放到前面、大的元素放到后面
                        srcArray[j + increment] = srcArray[j];
                    } else {
                        break;
                    }
                }
                srcArray[j + increment] = temp;
            }


            // 输出 根据增量值排序后的序列
            System.out.println("增量值为:" + increment + ",排序结果如下:");
            for (int a = 0; a < srcArray.length; a++) {
                System.out.println(srcArray[a]);
            }
        }
    }

    /**
     * 执行 希尔排序
     */
    public static void main(String[] args) {

        // 定义待排序数列
        int[] src = new int[]{ 4, 3, 6, 2, 7, 1, 5, 8 };

        // 输出结果
        shellSort(src);

    }

}

测试结果

增量值为:4,排序结果如下:
4
1
5
2
7
3
6
8
增量值为:2,排序结果如下:
4
1
5
2
6
3
7
8
增量值为:1,排序结果如下:
1
2
3
4
5
6
7
8

Demo地址:Carson_Ho的Github地址:希尔排序


5. 性能分析

以下将分析算法的性能:时间复杂度、空间复杂度、稳定性


Carson带你学数据结构系列文章:
Carson带你学数据:线性表-数组、链表
Carson带你学数据:特殊的线性表-栈、队列
Carson带你学数据:串
Carson带你学数据:树
Carson带你学数据:二叉树
Carson带你学数据:图
Carson带你学数据:查找


欢迎关注Carson_Ho的CSDN博客

博客链接:https://carsonho.blog.csdn.net/


请点赞!因为你的鼓励是我写作的最大动力!

以上是关于Carson带你学数据结构:希尔排序,复杂度最高的排序算法的主要内容,如果未能解决你的问题,请参考以下文章

Carson带你学数据结构:希尔排序,复杂度最高的排序算法

Carson带你学数据结构:归并排序,稳定性最高的排序算法

Carson带你学数据结构:归并排序,稳定性最高的排序算法

Carson带你学数据结构:归并排序,稳定性最高的排序算法

Carson带你学数据结构:手把手带你全面优化快速排序算法

Carson带你学数据结构:图文详解冒泡排序 & 优化