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

}
相关推荐
TracyCoder1231 分钟前
LeetCode Hot100(19/100)——206. 反转链表
算法·leetcode
m0_715575343 分钟前
分布式任务调度系统
开发语言·c++·算法
Configure-Handler19 分钟前
buildroot System configuration
java·服务器·数据库
naruto_lnq24 分钟前
泛型编程与STL设计思想
开发语言·c++·算法
zxsz_com_cn1 小时前
设备预测性维护算法分类及优劣势分析,选型指南来了
算法·分类·数据挖掘
:Concerto1 小时前
JavaSE 注解
java·开发语言·sprint
m0_748708051 小时前
C++中的观察者模式实战
开发语言·c++·算法
然哥依旧1 小时前
【轴承故障诊断】基于融合鱼鹰和柯西变异的麻雀优化算法OCSSA-VMD-CNN-BILSTM轴承诊断研究【西储大学数据】(Matlab代码实现)
算法·支持向量机·matlab·cnn