希尔排序(shellsort)

希尔排序是一种基于插入排序的改进算法,通过设置增量序列逐步减少排序间隔,使得数据部分有序,最终达到全局有序。文章详细介绍了希尔排序的思想,包括拆表和插入排序的过程,并探讨了其性能,指出空间复杂度为O(1),时间复杂度与增量序列选择有关,最坏情况下接近插入排序的O(n^2)。希尔排序不适用于链表,因为它依赖于随机访问特性。
摘要由CSDN通过智能技术生成


前言

先追求表中部分元素有序,在逐渐逼近全局有序

一、思想(拆表+插入排序)

假设我们初始设置增量为总数的一半,将每个分开的表插入排序
在这里插入图片描述得到结果再将d/2,开始分表插入排序,直到,d=1,则全部排完

//排序1
void shell_sort(int A[], int n) {
   
    int di;
    int i;
    int j;
    //步长即di的变化
    for (di = n / 2; di >= 1; di = di / 2) {
   
        //注意,已分好段,每段第二个值开始操作
        for (i = di + 1; i <= n; i++) {
   
            //检查前面的值是不是比当前的值大,如果比较大的话开始调换
            if (A[i] < A[i - di]) {
   
                A[0] = A[i];  //暂存在A[0]中</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值