您当前的位置: 首页 >  数据结构
  • 2浏览

    0关注

    880博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【大话数据结构C语言】67 希尔排序

CodeAllen嵌入式编程 发布时间:2021-05-22 23:17:05 ,浏览量:2

众所周知,排序算法最重要的就是速度,但是前边介绍的几个算法时间复杂度都是n的平方
这个问题其实困扰了计算机界前辈们很久,一度有人认为“排序算法时间复杂度不可能突破n方”
 
但是,终有一天还是有科学家发现了,并且接连就出现好几种可以超越n方的排序算法,把内培训算法的时间复杂度提升到了nlogn
 
希尔排序的时间复杂度是,比前边几种的要好
 
 
希尔排序
事实上还是直接插入排序,然后分成几个小组分别排序
 
 
#include 

void InsertSort(int k[], int n)
{
    int i, j, temp;
    int gap = n;

    do
    {
        gap = gap/3 + 1;

        for( i=gap; i < n; i++ )
        {
            if( k[i] < k[i-gap] )
            {
                temp = k[i];

                for( j=i-gap; k[j] > temp; j-=gap )
                {
                    k[j+gap] = k[j];
                }

                k[j+gap] = temp;
            }
        }
    }while(gap > 1);
}

int main()
{
    int i, a[10] = {5, 2, 6, 0, 3, 9, 1, 7, 4, 8};

    InsertSort(a, 10);

    printf("排序后的结果是:");
    for( i=0; i < 10; i++ )
    {
        printf("%d", a[i]);
    }
    printf("\n\n");

    return 0;
}

 

关注
打赏
1665938897
查看更多评论
立即登录/注册

微信扫码登录

0.0387s