shellSort

稳定性:不稳定

时间复杂度:O(N^13~N^17)

空间复杂度:O(1)

由于多次插入排序,我们知道一次插入排序是稳定的,不会改变相同元素的相对顺序,但在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动,最后其稳定性就会被打乱,所以shell排序是不稳定的。

java 复制代码
public static void main(String[] args) {
    
    int[] array = {31,432,1,53,75,36,21,26,622,66,71 57};

    int gap = array.length;// 确定组数

    while(gap > 1) { // 当gap为1时,说明已经排序好了
        for(int i = gap; i < array.length; i++) {
            int j = i - gap;//分组
            while(j >= 0) {
                int tmp = array[i]
                if(array[i] < array[j]) { //交换
                    array[j + gap] = array[j];
                    array[j] = tmp;
                    j -= gap;
                }else {
                    break;//如果j+1元素比j大,说明j前面的元素已经都是有序的了
                }
            }
        }
    }

}
相关推荐
_深海凉_7 分钟前
LeetCode热题100-寻找两个正序数组的中位数
算法·leetcode·职场和发展
小袁拒绝摆烂9 分钟前
多表关联大平层转JSON树形结构
java·json
ja哇1 小时前
大厂面试高频八股
java·面试·职场和发展
旖-旎1 小时前
深搜练习(电话号码字母组合)(3)
c++·算法·力扣·深度优先遍历
谭欣辰1 小时前
C++快速幂完整实战讲解
算法·决策树·机器学习
Mr_pyx1 小时前
【LeetHOT100】随机链表的复制——Java多解法详解
算法·深度优先
red_redemption1 小时前
自由学习记录(175)
学习
yoyo_zzm1 小时前
Laravel6.x新特性全解析
java·spring boot·后端
AIFarmer1 小时前
【无标题】
开发语言·c++·算法
Nick_zcy2 小时前
小说在线阅读网站和小说管理系统 · 功能全解析
java·后端·python·springboot·ruoyi