希尔排序算法(C语言实现)

希尔排序算法(C语言实现)希尔排序算法 demo

一、希尔排序

由希尔在1959年提出,设定一个元素间隔增量gap,将参加排序的序列按这个间隔分成若干个子序列,对子序列用一般排序法排序与冒泡排序的思想相似,即将两数比较交换;冒泡法是相邻两数比较交换,而希尔排序只有当希尔间隔值为1时才与冒泡法完全一样,所以可以跟据希尔间隔值的不同进行分组排序最优间隔值是至今未解决的数据难题,一般用折半间隔,直到间隔为1;如果直接将希尔间隔设为1效率则是最低的,需要多次遍历。

二、希尔排序处理过程

将固定间隔值两两比较交换,若干次后,这个序列将成为一个有序序列对分好组的子序列采用两两比较交换,循环比较一遍之后序列不一定有序,所以对于子序列可能会进行多次循环比较,直到排好序。

三、图解

希尔排序算法(C语言实现)

四、demo

void shellsort(int *k,int n) { int i, j, temp, gap = n; while(gap > 1) { gap = gap/2; /*增量缩小,每次减半*/ for(i=0;i<n-gap;i++) //n-gap 是控制上限不让越界 { j = i + gap; //相邻间隔的前后值进行比较 if(k[i]>k[j]) { temp = k[i]; k[i] = k[j]; k[j] = temp; } } } }




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233944.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 苹果消息推送服务教程:第一部分(共2部分)

    苹果消息推送服务教程:第一部分(共2部分)这篇文章还可以在这里找到 英语LearnhowtoaddPushNotificationsintoyouriPhoneapp!这是iOS教程团队的MatthijsHollemans编写的一篇教程,MatthijsHollemans是一个经验丰富的iOS开发者和设计师。在iOS系统中,在后台运行的程序能够进行的操作是非常有限的。这种限制

    2022年7月12日
    27
  • Python之range()函数

    Python之range()函数参考来源:https://realpython.com/python-range/1.Pythonrange()函数可创建一个整数列表,一般用在for循环中。三种方法可以调用range()

    2022年7月5日
    24
  • Unity3d场景快速烘焙【2020】

    Unity3d场景快速烘焙【2020】很多刚刚接触Unity3d的童鞋花了大量的时间自学,可总是把握不好Unity3d的烘焙,刚从一个坑里爬出来,又陷入另一个新的坑,每次烘焙一个场景少则几个小时,多则几十个小时,机器总是处于假死机状态,半天看不到结果,好不容易烘焙完了,黑斑、撕裂、硬边、漏光或漏阴影等缺陷遍布,惨不忍睹,整体效果暗无层次,或者苍白无力,灯光该亮的亮不起来,该暗的暗不下去,更谈不上有什么意境,痛苦的折磨,近乎失去了信心,一个团队从建模到程序,都没什么问题,可一到烘焙这一关,就堵得心塞,怎么也搞不出好的视觉效果,作品没法及时向用户交

    2022年6月11日
    29
  • webstorm怎么激活破解方法

    webstorm怎么激活破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    41
  • Wscript.shell 详解

    Wscript.shell 详解Wscript.shellWscript.shell是Wshshell的ProIDWshshell是一个对象,存放在windows系统中的wshom.ocx文件中,可供在windows上运行的程序调用。他可对windows的外壳程序进行访问。对象(object)是一些相关变量和方法的软件集,或者说库。当你需要这个对象里面的变量,方法,功能的时候,你就可以使用相关语

    2025年7月11日
    3
  • UDP 流量攻击_网络流量攻击

    UDP 流量攻击_网络流量攻击最近在群里聊天看到有人被UDP攻击我几年前也遇到过当时前任工作交接过来面临很多挑战。话又说回来凡是跳槽或主动找到你的公司都是让你去救火的。先说说UDP攻击原理很简单就是随便连接一个IP地址随便写一个端口号。IP地址存在与否并不重要。这是UDP的特性。然后发送大数据包堵塞交换机路由器。我们在局域网上模拟注意UDP不能在同一个VLAN下…

    2022年9月27日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号