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

举报
CodeAllen 发表于 2021/10/29 22:38:03 2021/10/29
【摘要】 众所周知,排序算法最重要的就是速度,但是前边介绍的几个算法时间复杂度都是n的平方 这个问题其实困扰了计算机界前辈们很久,一度有人认为“排序算法时间复杂度不可能突破n方”   但是,终有一天还是有科学家发现了,并且接连就出现好几种可以超越n方的排序算法,把内培训算法的时间复杂度提升到了nlogn ...
众所周知,排序算法最重要的就是速度,但是前边介绍的几个算法时间复杂度都是n的平方
这个问题其实困扰了计算机界前辈们很久,一度有人认为“排序算法时间复杂度不可能突破n方”
 
但是,终有一天还是有科学家发现了,并且接连就出现好几种可以超越n方的排序算法,把内培训算法的时间复杂度提升到了nlogn
 
希尔排序的时间复杂度是,比前边几种的要好
 
 

希尔排序

事实上还是直接插入排序,然后分成几个小组分别排序
 
 

   
  1. #include <stdio.h>
  2. void InsertSort(int k[], int n)
  3. {
  4. int i, j, temp;
  5. int gap = n;
  6. do
  7. {
  8. gap = gap/3 + 1;
  9. for( i=gap; i < n; i++ )
  10. {
  11. if( k[i] < k[i-gap] )
  12. {
  13. temp = k[i];
  14. for( j=i-gap; k[j] > temp; j-=gap )
  15. {
  16. k[j+gap] = k[j];
  17. }
  18. k[j+gap] = temp;
  19. }
  20. }
  21. }while(gap > 1);
  22. }
  23. int main()
  24. {
  25. int i, a[10] = {5, 2, 6, 0, 3, 9, 1, 7, 4, 8};
  26. InsertSort(a, 10);
  27. printf("排序后的结果是:");
  28. for( i=0; i < 10; i++ )
  29. {
  30. printf("%d", a[i]);
  31. }
  32. printf("\n\n");
  33. return 0;
  34. }

 

文章来源: allen5g.blog.csdn.net,作者:CodeAllen的博客,版权归原作者所有,如需转载,请联系作者。

原文链接:allen5g.blog.csdn.net/article/details/117173262

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。