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前面的元素已经都是有序的了
                }
            }
        }
    }

}
相关推荐
吞下星星的少年·-·5 分钟前
Div.2 CF 1130B题(构造,贪心)
算法·贪心·构造
文丑颜不良啊7 分钟前
LeetCode1481~1500题目解析
java·leetcode
2601_962885729 分钟前
quotes 字段全解:涨跌幅、振幅、换手率的口径与单位
java·前端·spring
前端精髓34 分钟前
调用openrouter的免费API模型
java·前端·javascript
步行cgn1 小时前
Spring MVC 拦截器 Interceptor 详解:从执行流程到实战应用
java·spring·mvc
文丑颜不良啊1 小时前
LeetCode1381~1400题目解析
java·leetcode
开开心心_Every1 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
是main不是漫1 小时前
【双指针——移动零】数组划分类题目的入门基石
c++·算法
Nuanyt1 小时前
Agent 学习笔记(下篇三):上线工程、进阶选择与操作界面(Stage 7 / 7.5 / 8 + 延伸路线)
笔记·python·学习·memory·aiagent·harness
萧瑟余晖2 小时前
Spring Batch核心模型与快速上手详解
java·spring·batch