幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

高级排序之归并排序希尔排序

  前言
  继上次排序算法简单排序算法之冒泡、插入和选择排序Java实现版后,本文学习高级排序算法归并排序、希尔排序,快速排序将在后续更新。
  本文实现代码调用方法,部分来自前一个文章:简单排序算法之冒泡、插入和选择排序Java实现版归并排序
  归并排序的思想是把一个数组分成两半,然后对每一个二分支一划分成两个4分之一,以此类推,直到子数组只含有一个数据项为止,然后对每对划分结果进行合并排序。具体图示如下:
  代码实现privatestaticvoidmerge(int〔〕array,int〔〕workSpace,intlowPtr,inthighPtr,intupperBound){intj0;intlowerBoundlowPtr;intmidhighPtr1;intnupperBoundlowerBound1;while(lowPtrmidhighPtrupperBound){if(compare(array〔lowPtr〕,array〔highPtr〕)0){copyData(array〔lowPtr〕,j,workSpace);}else{copyData(array〔highPtr〕,j,workSpace);}}while(lowPtrmid){copyData(array〔lowPtr〕,j,workSpace);}while(highPtrupperBound){copyData(array〔highPtr〕,j,workSpace);}for(j0;jn;j){copyData(workSpace〔j〕,lowerBoundj,array);}}privatestaticvoidrecMergeSort(int〔〕array,int〔〕workSpace,intlowerBound,intupperBound){if(lowerBoundupperBound){return;}intmid(lowerBoundupperBound)2;recMergeSort(array,workSpace,lowerBound,mid);分割左侧recMergeSort(array,workSpace,mid1,upperBound);分割右侧merge(array,workSpace,lowerBound,mid1,upperBound);合并排序}合并排序paramarraypublicstaticvoidmergeSort(int〔〕array){compareCount0;swapCount0;int〔〕workspacenewint〔array。length〕;longstartnewDate()。getTime();recMergeSort(array,workspace,0,array。length1);longendnewDate()。getTime();printResult(归并排序,复制次数,start,end);}执行结果
  冒泡排序比较次数:49995000,交换次数:24677093,耗时:167毫秒
  选择排序比较次数:49995000,交换次数:9996,耗时:68毫秒
  插入排序比较次数:25187177,复制次数:25187284,耗时:33毫秒
  归并排序比较次数:120284,复制次数:267232,耗时:3毫秒
  从结果可以看出归并排序比简单排序的任何一个算法都要快,但它要多耗费一倍的存储空间。(归并排序算法的排序速度是相当快的,但也存在非常显著的缺点,就是它对存储空间的过多占用)希尔排序
  希尔排序是基于插入排序的,它的发明者DonaldL。Shell对插入排序做了一些调整,就大幅度的减少了插入排序所必需的工作量,我们先看一下希尔排序对插入排序做了那些调整。
  插入排序通过1号位置与0号位置比对,将小的一方挪到左侧,然后2比1,复制(1)、3比2,复制多于(1)、4比3。。。逐步形成左侧基本有序,但也正是因为2比1,3比2,4比3导致复制次数逐渐增多。
  而希尔排序则不是1比0、2比1、3比2了,它是计算出一个增量m,然后让m比0,2m比m,3m比2m,这就使m,2m,3m有序,然后在m1比01(即比较项位置右移一位),直到所有数据都完成了m增量排序为止,此时就形成了m增量的基本有序,对于大量数据排序,也应该使用大增量值开始,然后逐渐缩小增量,最后可以直接使用插入排序对基本有序的数据进行排序了(插入排序对基本有序的数据排序是非常快的)。普通的排序可以看成是1增量排序。
  注意:此图演示的是4,2,1增量如何设置算法的增量值
  这里使用Knuth提出的公式:h3h1来计算合适的第一次增量值,然后用h(h1)3逐级计算缩小的增量值。
  h
  3h1
  (h1)3
  1hr4hr4hr13hr1hr13hr40hr4hr40hr121hr13hr121hr364hr40hr364hr1093hr121hr1093hr3280hr364hr明显的,这个增量值不能大于待排序的数组长度,比如待排序数组长度是1000,则第一次增量值应该是364,然后用公式(h1)3计算下一次的增量值为121,再下一次则为40,最终为1(因为最终都要对基本有序的序列做一次普通的插入排序(1增量))。代码实现希尔排序paramarraypublicstaticvoidxierSort(int〔〕array){compareCount0;swapCount0;intinner,outer;inttemp;inth1;计算跨度while(harray。length3){hh31;}longstartnewDate()。getTime();while(h0){for(outerh;outerh1compare(array〔innerh〕,temp)0){copy(innerh,inner,array);innerh;}copyData(temp,inner,array);}h(h1)3;}longendnewDate()。getTime();printResult(希尔排序,复制次数,start,end);}执行结果
  冒泡排序比较次数:49995000,交换次数:49502991,耗时:103毫秒
  选择排序比较次数:49995000,交换次数:9901,耗时:70毫秒
  插入排序比较次数:24574076,复制次数:24573983,耗时:42毫秒
  归并排序比较次数:120141,复制次数:267232,耗时:3毫秒
  希尔排序比较次数:843997,复制次数:848708,耗时:11毫秒
  从结果可以看出,希尔排序通过对插入排序增量的调整,有效减少了比较、复制的次数,很明显的提升了插入排序的排序效率。如你所见,希尔排序实现简单,效率高,所以几乎很多排序需求都可以从希尔排序开始评估最优排序算法。
  至此,本文结束
  原文格式更佳高级排序之归并排序、希尔排序NGUP的个人技术博客

云顶之弈比赛要来了!神超等一众主播参赛,观众一次看个够对于云顶之弈的玩家来说,相信他们在S6赛季也是找到了很多新奇的玩法,比如三星大虫子,海克斯科技等等。由于海克斯科技的加入,玩家们在变换阵容的时候也是有了更多的选择,所以这个赛季……地球内部的冷却速度比预想的要快,我们快要凉凉了吗地球大约在45亿年前形成。从那以后,它的内部就一直在慢慢冷却。虽然,地球表面和大气层的温度在千万年中不断波动(外部温度目前正在变暖),但熔融的内部(地球跳动的心脏),却在……国羽天才王适娴17岁恋上谌龙,20岁亚运冠军,遗憾没打过奥运1990年2月13日王适娴出生于江苏苏州,小时候的她有点胖,被同学嘲笑像个球,这让她很伤心,8岁父母让她去业余体校练羽毛球为的是减肥。此后羽毛球成了她未来18年的牵挂与眷……原神手游新角色荒泷一斗如何打出打出伤害?荒泷一斗操作手游巴士(www。shouyoubus。com)2021年12月15日讯:本次给大家们继续带来原神这款游戏的攻略介绍,主要的是因为在这款游戏中不同角色之间的操作都是不太一样的,……双顶径108毫米能顺产吗?陈妈妈,我怀孕40周,今天早上肚子有点痛,赶紧到了医院。一直想顺产,因为我还要生二胎。医生检查说宝宝的双顶径是108毫米,体重肯定超过八斤,还能顺产吗?孕3940周,一般……Deft谈Uzi复出给出最高评价,是最敬佩2个AD之一,UZ小伙伴们大家好,欢迎您收看本期游戏资讯,我是小米!自从Uzi复出加盟BLG之后,成了各大赛区议论的焦点,有不少选手都发表了自己的看法,特别是我们隔壁的LCK赛区,更是对其……荷塘醉虾的醉(一)凌晨三点,我独自坐在单位北道口的值班岗亭里。亭子外面是宽敞的马路,双向六车道。冬天虽然早已来到,但是马路边桐树的叶子还没有完全掉光。不远处高耸的路灯散发出来蛋黄色的光,透过参差……混沌小队好玩吗?游戏特色内容介绍混沌小队好玩吗?很多小伙伴可能对这款国产肉鸽游戏还不是很了解吧,今天小编给大家带来混沌小队游戏特色内容介绍,快来看一下吧。混沌小队游戏特色内容介绍混沌小队是一款集合……3000元在泰国能干嘛?很多人可能想不到,原来能玩得这么痛快提到口碑好的电影,那么湄公河行动一定在其中。这条电影的拍摄采用了湄公河当地的实景,我们都知道湄公河位于泰国,近些年来,在旅游方面为泰国贡献了不少经济支持。(此处已添加小程……游戏日报1222又一家游戏公司拿出1。5亿帮员工买房腾讯就《斗罗大陆》要求抖音赔偿8亿腾讯向法院申请变更诉讼请求,要求抖音为平台侵害《斗罗大陆》著作权赔偿金额从6160万元提高到8亿元。过去半年,腾讯以侵害著作权的名义,累……内存为程序分配空间的四种分配方式存储器是个宝贵但却有限的资源。一流的操作系统,需要能够有效地管理及利用存储器。内存为程序分配空间有四种分配方式:1、连续分配方式2、基本分页存储管理方式……3岁女童月赚百万,体重涨到70斤,拿孩子赚钱的父母有多可怕?来源:凯叔育儿(ID:yuerjinhualun)作者:时秒前几天看到一则新闻,着实令人愤怒!竟然把孩子养成了赚钱的工具。吃柠檬、吃洋葱、摔到铁盒上。。……
自己带娃or隔辈带娃?区别可能比你想象的更大过往中外名士留下的经典名言中,渗透着很多教育理念精髓,犹如凝练的结晶,有时,恰恰就是这样一句话,让家长焦虑的心结茅塞顿开,如同站在巨人的肩膀上思考一样,豁然开朗。这个寒假……木星比某些恒星还要大,为什么它不是恒星?未来它能变成恒星吗?木星是太阳系内最大的行星,它以其巨大的质量和强大的引力,吸引了大量来自太阳系外的小行星,或偏离它们的运行轨道,或直接将它们拉入怀抱,从而极大减少了这些系外天体对太阳系内部的威胁……一光年就是光飞行一年的距离,光我一瞬间就可飞行一光年光年,并不是字面上看起来的时间单位,而是指的距离,也就是光在一年时间里飞行的距离。大约等于9。46万亿千米,多用于描述浩瀚宇宙天体之间的距离。光年是人为的定义,也就是说,……5G北斗融合数字孪生联通科技赋能守护水利安澜中国日报1月11日电在山东,峻岭崇山之间,星罗棋布着数以千计的小型水库。这些水库大多修建于上世纪5070年代,信息化监控薄弱,一旦遇到极端天气灾害,管理设施短缺、病险隐患突出等……孙新生越南中部游记(一)初上中央铁路我们在10时左右登上火车南行。清化车站不大,候车室里空荡荡的,只是离开车前二三十分钟才陆陆续续有人候车。有两个站台,但无天桥相连,人们跨越车道自由进出,可能是米轨的原因,……终于官宣离婚,恭喜她原创:捡书姑娘太出人意料了。姑娘第一次见证了明星在情人节官宣离婚。昨天,2月14日的下午,情侣们在甜甜蜜蜜,单身人士在煎熬周一。而女明星吴倩,猝不及防地……有茶要说(五)雪窦寺1947年追念太虚法师置订的普洱生熟茶雪窦寺,全称雪窦资圣禅寺,坐落于秀甲四明的中国五大佛教名山之一的雪窦山山心,位于浙江省宁波市奉化区溪口镇。肇创于晋朝,兴起于大唐,鼎盛于两宋。南宋被敕封为五山十刹之一,明代列入……保姆过失致人死亡本已牵强,竟然还有人要求判处极刑2022年,浙江杭州一名2岁左右女童因被保姆遗留在电梯内,随后自8楼坠亡。此案今日在杭州市拱墅区人民法院公开开庭审理。公诉人认为被告人吴秀芳疏忽大意,致幼儿高坠死亡,应当……别再用皂基洗面奶啦随着社会的发展,人们对美的追求也提升了一个层次,不管是男女老少,对护肤的重视程度也越来越高。洗面奶等产品也成了人们生活中必不可少的一环。在早期,市面上常见的大部分是皂基洗……最终幻想14修复建模低劣的葡萄玩家社区集体悼念SE发布了《最终幻想14》晓月之终焉的6。01补丁,该更新不仅新增了一些物品,还把之前玩家一直调侃的建模低劣多边形葡萄修复了。《最终幻想14》晓月之终焉上线后,玩家发现L……小米12Pro登高端热销榜TOP3仅次于苹果主打高端定位的小米12系列手机成功登上了京东高端手机热销榜。根据京东50005999元中高端手机销量排行榜显示,小米12Pro跻身TOP3,位居安卓榜榜首,全部系统机型第三名。……融汇温旅温泉设计之度假酒店室内外空间一体化表征通过对国内外诸多案温泉度假酒店案例的研究与分析,根据以上室内外空间一体化的基本要素,温泉度假酒店室内外空间一体化有如下几种表征:1、功能属性一体化每个建筑空间具有特……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网