童话说说技术创业美文职业
快好知
职业母婴
职场个人
历史治疗
笔记技能
美文纠纷
幽默家庭
范文作文
乐趣解密
创业案例
社会工作
新闻家居
心理安全
技术八卦
仲裁思考
生活时事
运势奇闻
说说企业
魅力社交
安好健康
传统笑话
童话初中
男女饮食
周易阅读
爱好两性

05算法入门教程希尔排序

12月4日 托天庙投稿
  1。前言
  本节内容是排序算法系列之一:希尔排序,主要讲解了希尔排序的主体思路,选取了一个待排序的数字列表对希尔排序算法进行了演示,给出了希尔排序算法的Java代码实现,帮助大家可以更好的理解希尔排序算法。2。什么是希尔排序?
  希尔排序(ShellSort),是计算机科学与技术领域中较为简单的一种排序算法。
  希尔排序是插入排序的一种,有时候也被称为缩小增量排序。它是插入排序的改进版,与插入排序的不同之处在于,希尔排序会优先比较距离较远的元素。希尔排序是按照其设计者希尔(DonaldShell)的名字命名而来,并于1959年公布出来。3。希尔排序过程
  在介绍完希尔排序之后,我们一起来看一下希尔排序的实现步骤具体是什么样的吧。这里我们假设待排序的序列为〔9,2,11,7,12,5〕,我们按照从小到大的序列进行排序。3。1算法步骤步骤1:
  选择一个增量序列k1,k2,km,其中k1k2km1,即增量序列大小依次减小,并且最后一个增量序列大小为1。步骤2:
  按照增量序列的个数m,对整个待排序序列进行m趟排序。步骤3:
  每一趟排序,根据对应的增量ki,需要将待排序的序列分成对应长度的子序列,分别在子序列上面进行直接插入排序。当且仅当增量序列为1时,整个序列作为一个整体处理。
  其实,上面的步骤1和步骤2都是在排序之前进行的处理,选择对应的增量。上面的步骤3每执行一次,就相当于是进行了一次插入排序,只是每次都会选择一个增量,将整个待排序序列按照增量进行划分,然后在对应增量上面进行插入排序。接下来,让我们用上面的待排序数字队列〔9,2,11,7,12,5〕进行整个算法步骤的排序演示工作。3。2算法演示
  按照2。1节的排序步骤,我们需要先选择对应的希尔排序中的增量值,按照一般性的原则,我们可以将增量按照待排序的序列长度依次整除2,直到增量为1停止,得到对应的增量。如下:623,321依次获得增量值3,1,除法取整
  接着,我们调用2。1中的步骤2,步骤3,按照增量值的取法,依次进行对应序列的插入排序,首先我们取增量值为3,对应排序示例如下:〔9,2,11,7,12,5〕〔9,7〕,〔2,12〕,〔11,5〕增量取3,整个待排序序列按照增量为3进行分组,分成3组,依次排序〔9,7〕,〔2,12〕,〔11,5〕〔7,9〕,〔2,12〕,〔5,11〕对应增量位置进行排序〔7,9〕,〔2,12〕,〔5,11〕〔7,2,5,9,12,11〕完成第一次的对应增量的排序过程
  Tips:希尔排序过程中会每次选择一个增量值,然后将待排序列表按照增量值进行分组,对应的分组内部进行插入排序。
  在完成增量为3的插入排序之后,我们接着进行增量为1的插入排序,这个步骤其实跟我们之前的插入排序步骤完全一致。整个过程如下:〔7,2,5,9,12,11〕〔7〕;〔2,5,9,12,11〕插入排序初始化,选择第一个元素作为排序好的序列〔7〕;〔2,5,9,12,11〕〔2,7〕;〔5,9,12,11〕选择未排序元素2,插入排序好的序列〔7〕形成新的排序好序列〔2,7〕〔2,7〕;〔5,9,12,11〕〔2,5,7〕;〔9,12,11〕选择未排序元素5,插入排序好的序列〔2,7〕形成新的排序好序列〔2,5,7〕〔2,5,7〕;〔9,12,11〕〔2,5,7,9〕;〔12,11〕选择未排序元素9,插入排序好的序列〔2,5,7〕形成新的排序好序列〔2,5,7,9〕〔2,5,7,9〕;〔12,11〕〔2,5,7,9,12〕;〔11〕选择未排序元素12,插入排序好的序列〔2,5,7,9〕形成新的排序好序列〔2,5,7,9,12〕〔2,5,7,9,12〕;〔11〕〔2,5,7,9,11,12〕选择未排序元素11,插入排序好的序列〔2,5,7,9,12〕形成新的排序好序列〔2,5,7,9,11,12〕
  Tips:增量为1时候执行步骤3,实际上就是执行一次插入排序,只是在执行插入排序之前,之前的序列在一定程度上面已经进行了插入排序,所以在增量为1的插入排序过程中可以减少插入时候比较的次数,从而可以在一定程度上面减少算法的运行时间。
  从上面的示例可以看出,其实整个希尔排序的过程,就是根据增量大小依次进行插入排序,本质上还是针对插入排序的一种优化。4。Java代码实现
  在说明希尔排序的整个过程之后,接下来,我们看看如何用Java代码实现希尔排序算法。importjava。util。ApublicclassShellSort{publicstaticvoidmain(String〔〕args){初始化需要排序的数组intarray〔〕{9,2,11,7,12,5};初始化希尔排序的增量为数组长度intgaparray。不断地进行插入排序,直至增量为1while(true){增量每次减半gapgap2;for(inti0;i){内部循环是一个插入排序for(jarray。jgap){inttemparray〔j〕;while(k0array〔k〕temp){array〔kgap〕array〔k〕;}array〔kgap〕}}增量为1之后,希尔排序结束,退出循环if(gap1)}打印出排序好的序列System。out。println(Arrays。toString(array));}}
  运行结果如下:〔2,5,7,9,11,12〕
  代码中的第8行初始化一个需要排序的数组,后面按照从小到大的排序规则,实现了数组的排序。第12行至30行是整个希尔排序的流程。第14行代码表示希尔排序中的增量每次整除2取得,第17行至25行是一个for循环结构,表明按照增量进行插入排序。最后第32行代码输出排序好的数组。5。小结
  本节主要学习了希尔排序算法,通过本节课程的学习,需要熟悉希尔排序的算法流程,知道希尔排序算法的实现思路,可以自己用代码实现希尔排序算法。至此,我们已经学习了排序算法中的冒泡排序、插入排序、选择排序、希尔排序。
投诉 评论 转载

美股尾盘延续涨势,纳指大涨3美股尾盘延续涨势,纳指大涨3。苹果(AAPL。US)、特斯拉(TSLA。US)涨近4。苹果(AAPL。US)公司简介:苹果公司从事设计、制造和销售智能手机、个人电脑、平板……探究教学论读后感青岛宜阳路小学王磊古人云:人才之盛衰,其表在政,其里在学。道出了学习的真谛。认真拜读了《探究教学论》,发现此书贴近一线教师的教学实践,充分反映了教育界最新的教育教学研究成……介绍清明节的英语作文3篇导语:谈到清明节,有点历史知识的人,都会联想到历史人物介子椎。下面是小编为大家带来的介绍清明节的英语作文3篇,希望大家喜欢。介绍清明节的英语作文1QingMingisat……乘着梦想的翅膀飞翔观开学第一课有感梦想它是在你迷茫时的一盏明灯,为你指引方向;它是黑夜中在你枕边的一本书,为你开启黎明;它是在你每一个想放弃的时刻,一双伸向你的手,为你鼓起动力,永不放弃。在《开学第一课》中,我……我心中的一面旗帜小学生作文范文惠水县城关三小五(1)班杨昌梅在我的心灵深处,永远都高高地飘扬着这样一面鲜红的旗帜,催我不断奋进。他的爱国热忱、他的高尚情操,他的人格魅力,深深地感动着我们少年儿童,感染……过新年优秀日记500字随着当、当、当的钟声,我们告别了难忘的2017年,迎来了崭新的一年2018年。早晨,我一睁开眼睛,就披上衣服,来到爸爸妈妈房间,赤溜一下钻到妈妈的被窝里,拖长了声音喊:新……写同桌的作文我的新同桌我的同桌是我的老同学,上一年我们就在一个班里,刚上初中时,我性格开朗,人缘极好,认识了很多同学;而他性格内向,不爱说话,没人和他说话,我们也没啥交情,平常我们也不常说话。……05算法入门教程希尔排序1。前言本节内容是排序算法系列之一:希尔排序,主要讲解了希尔排序的主体思路,选取了一个待排序的数字列表对希尔排序算法进行了演示,给出了希尔排序算法的Java代码实现,帮助……某些词语的替代词1。量子理论:普朗克的丰碑2。《梦的解析》:一本惊世骇俗的书3。X射线:让我们永远铭记伦琴4。诺贝尔奖:国际最高荣誉奖5。空调:这里四季如春6。齐……我的梦中国梦在这个有着5。1亿平方千米的蓝色星球上,有一个美丽的国家,那便是我的祖国中国。中国是四大文明古国之一,有着五千年灿烂而悠久的历史。这使我们每一个中国人都很骄傲,每一……谈野心作文风使劲地吹着,她好像要把全世界都给征服了,她的野心就这么大。因为她可是来自于南极洲,威力无穷大。可她战败了,她的野心比不上人类。大自然所创造的高级动物,不,不能叫动物,人……京东回应被美国SEC列入预摘牌名单积极寻求可能的解决方案彭思雨中国证券报中证网中证网讯(记者彭思雨)5月5日午间,京东集团公告称,针对美国SEC将公司列入预摘牌名单一事,公司一直在积极寻求可能的解决方案,将继续遵守中美相关法律……
百度吃相新型掺杂剂显著提升钙钛矿型太阳能电池效率制造业管理销售订单有ERP系统了,你觉得热还有必要装OA系统苹果参与封杀俄罗斯,未来一旦出事,苹果会对别国这样吗?iPhoneX低价出售我的书包我心中的一位老师作文苹果官宣3月9日召开新品发布会,最具性价比iPhone将上市最美丽的相遇作文快递行业又要洗牌了hivejoin数据错误未央今日播报网信办就弹窗信息推送管理征求意见微信支付进一步降
爸,你总是心疼我的心疼300字作文田进:谁用的上网本阿、?给我介绍介绍。热文聚热点网 改善睡眠质量的方式改善睡眠饮食很关键柯基犬吃什么食物好柯基犬吃哪些食物好《撒哈拉的故事》读书笔记毛涤织物童装的缺点有哪些怎么打开朋友圈功能如何打开朋友圈功能格纹单品穿搭整理格纹半身裙如何搭配毕业演讲稿以前驰名的保定八大厂都是哪几个厂?这几个厂现在的情况如何?单排入围赛圆满结束,HT下雨凭借胆大心细的操作,成功晋级总决煲鸡汤最家常的做法分享(煮鸡汤怎么煮)热闻聚热点网

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找作文动态热点娱乐育儿情感教程科技体育养生教案探索美文旅游财经日志励志范文论文时尚保健游戏护肤业界