希尔排序

随便找了一张百度百科的希尔排序的词条图片:
这里写图片描述
该图片很好的说明了希尔排序的排序原理过程,根据该原理可以写出以下代码:

#include<stdio.h>
void   sort(int * array,int length)
{
    int i;
    int j;
    int k;
    for(i=length/2;i>0;i=i/2)
    {
        for(j=i;j<length;j++)
        {
            int tmp=array[j];
            for(k=j-i;tmp<array[k]&&k>=0;k=k-i)
            {
                array[k+i]=array[k];
            }
            array[k+i]=tmp;
        }
    }
}

int main(int argc, char const *argv[])
{
    int array[]={49,38,65,97,76,13,27,49,55,04};
    sort(array,10);
    int i;
    for(i=0;i<10;i++)
    {
       printf("%d\t",array[i]);
    }
    printf("\n");
    return  0;
}

运行结果:
这里写图片描述

//希尔排序:是一种特殊插入排序,根据等长度比较对应的元素值
//时间复杂: 最坏情况下需要比较O(n^1.5)次;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值