安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

常见的排序算法(下)

10月14日 六壬会投稿
  5。归并排序
  两个有序数组合并并不难,但是归并的思想确实是这个,但是如何分,分到何时呢?
  这个名字含义就是分为归和并两个阶段执行
  先说并吧,并要求是两个已经排序好了的数组(两个连续数组是位置上也连续),比如1,2,3,4,连续数组1,2和3,4,不能是1,2,4进行排序,
  对于两个已经排序好了的数据,好处是一次遍历便可以将两个数组合并成一个有序的数组
  然后再说归吧,归的思想就是,4,3,2,1,先分为4,3和2,1,将4,3继续分4,3,此时这就是两位置有序的数组,将他俩数组进行并,就成了3,4,然后2,1分为2,1,此时再将这俩数组排序,此时是1,2,然后将3,4和1,2进行排序,此时就是1,2,3,4,OK了归并排序author:AnthonypublicclassMergeSort{publicstaticvoidmain(String〔〕args){int〔〕arr1000Common。generateArr1000();splitAndMergerSort(arr1000,0,arr1000。length1);Common。showArr(arr1000);}将〔1,2,3〕数组分割成直到〔1〕〔2〕〔3〕这种,递归实现paramarr数组paramstart开始位置,索引从0开始paramend结束位置,索引0开始privatestaticvoidsplitAndMergerSort(int〔〕arr,intstart,intend){if(startend)intmiddle(endstart)1;splitAndMergerSort(arr,start,middle);splitAndMergerSort(arr,middle1,end);merge(arr,start,end,middle1);}paramarr数据paramstart索引从0开始,数组开始位置paramend索引从0开始,数组结束位置paramdelimiter切割位置:〔1,2,4,5〕参数(arr,0,3,2),分隔符是(starend)21privatestaticvoidmerge(int〔〕arr,intstart,intend,intdelimiter){if(startend)1。初始化数组intrlen(enddelimiter)1;int〔〕leftnewint〔llen〕;int〔〕rightnewint〔rlen〕;2。将分割数组,填充数据System。arraycopy(arr,start,left,0,llen);System。arraycopy(arr,delimiter,right,0,rlen);3。归并步骤intl0;intr0;intlenend1;for(i){if(lllenrrlen){if(left〔l〕right〔r〕){arr〔i〕left〔l〕;l;}else{arr〔i〕right〔r〕;r;}}else{if(lllen){arr〔i〕left〔l〕;l;}if(rrlen){arr〔i〕right〔r〕;r;}}}}第二种合并方式privatestaticvoidmerge(int〔〕leftarr,int〔〕rightarr){intlLleftarr。intrLrightarr。intresultLlLrL;int〔〕resultnewint〔resultL〕;intl0;intr0;intw0;while(wresultL){if(llLrrL){if(leftarr〔l〕rightarr〔r〕){result〔w〕leftarr〔l〕;l;w;}else{result〔w〕rightarr〔r〕;r;w;}}else{if(llL){System。arraycopy(leftarr,l,result,w,lLl);}if(rrL){System。arraycopy(rightarr,r,result,w,rLr);}}}Common。showArr(result);}}6。堆排序
  数组他可以利用索引关系构建出一个完全二叉树,所以利用这个特性很好的组成堆,
  堆排序分为两个阶段
  一阶段:堆化将数据转换成大顶堆或者小顶堆,就是根节点数据大于子叶数据,就是大顶堆。
  二阶段:利用大顶堆或者小顶堆进行排序,就是将堆顶和最后一个数据进行交换,因为堆顶是最大值或者最小值,然后堆化,重复操作,堆排序author:AnthonypublicclassHeapSort{publicstaticvoidmain(String〔〕args){int〔〕arr1000Common。generateArr1000();heapsort(arr1000,arr1000。length);Common。showArr(arr1000);}堆排序paramtreeparamnstaticvoidheapsort(int〔〕tree,intn){1。构建一个堆buildheap(tree,n);2。堆顶和最后一个节点做交换,但是我们需要在数组上截取,所以就是每次for(intin1;i0;i){交换节点swap(tree,i,0);第0个位置开始堆重新排序heapify(tree,i,0);}}构建一个大顶堆paramtreeparamnstaticvoidbuildheap(int〔〕tree,intn){最后一个节点intlastnoden1;开始遍历的位置是:最后一个堆的堆顶,意思就是,整个树中最小的一个堆,其实就是最后一个节点的父节点intparent(lastnode1)2;递减向上遍历for(i0;i){heapify(tree,n,i);}}paramtree代表一棵树paramn代表多少个节点parami对哪个节点进行heapifystaticvoidheapify(int〔〕tree,intn,inti){如果当前值大于n直接返回了,一般不会出现这种问题。。。。。if(in){}子节点intc12i1;intc22i2;假设最大的节点为i(父节点)如果大于赋值给maxif(c1ntree〔c1〕tree〔max〕){maxc1;}如果大于赋值给maxif(c2ntree〔c2〕tree〔max〕){maxc2;}如果i所在的就是最大值我们没必要去做交换if(max!i){交换最大值和父节点的位置swap(tree,max,i);交换完以后,此时的max其实就是i原来的数,就是最小的数字,所以需要递归遍历heapify(tree,n,max);}}staticvoidswap(int〔〕tree,intmax,inti){inttemptree〔max〕;tree〔max〕tree〔i〕;tree〔i〕}}7。桶排序
  其实我认为他是区间排序,举个例子〔1,2,3,4,5,6〕,将他放入6个区间内,(0,1〕,(1,2〕,依次到最后,那么这个放置过程完全是可以通过计算得到的。所以一次遍历便可以完成排序,如果区间内部排序,可以选择其他排序方式。packagecom。importjava。util。A桶排序,其实就是区间排序1,2,3,4,5,6,我们分成03,36的区间(首先区间是有顺序的),1,2,3进去区间一,4,5,6进去区间二,然后区间内排序,此时就构建了新的数组author:AnthonypublicclassBucketSort{publicstaticvoidmain(String〔〕args){int〔〕arr1000Common。generateArr1000();bucketSort(arr1000,10);Common。showArr(arr1000);}paramarr数组parambucketCount桶的个数publicstaticvoidbucketSort(int〔〕arr,intbucketCount){intlenarr。if(len1bucketCount0){}遍历一次找到最大值最小值intmaxarr〔0〕,minarr〔0〕;for(inti:arr){if(imax){}if(imin){}}划分区间,比如511,此时我们需要桶数量(假如是2),如果我们不1,623,那么(115)32,此时坐标2这个桶所以区间需要1操作,所以上面就是723。54,(115)41intrange((maxmin1)bucketCount)0?(maxmin1)bucketCount:(maxmin1)bucketCount1;创建桶,是一个二维数组int〔〕〔〕bucketnewint〔bucketCount〕〔〕;for(inti:arr){bucket〔(imin)range〕arrAppend(bucket〔(imin)range〕,i);}for(int〔〕ints:bucket){sort(ints);}intcount0;for(int〔〕ints:bucket){if(ints!null){for(intanInt:ints){arr〔count〕anI}}}}数组拷贝paramarrparamvaluereturnprivatestaticint〔〕arrAppend(int〔〕arr,intvalue){数组如果为空,新建一个数组,if(arrnull){arrnewint〔0〕;}数组拷贝,其实就是长度1arrArrays。copyOf(arr,arr。length1);将值复制arr〔arr。length1〕返回}privatestaticvoidsort(int〔〕arr){空或者01都直接返回if(nullarrarr。length1){}231for(intindex1;indexarr。index){当前位置,开始必须从第二个开始inttemparr〔index〕;左边位置intleftindex1;移动坐标其实就是。。。while(left0arr〔left〕temp){互换位置arr〔left1〕arr〔left〕;向前移动}最后保存数据arr〔left1〕}}}8。基数排序
  我没有写,他和桶排序类似,一次比较个位数,十位数,百位数数据,分成10个桶,对号入座,第一遍比较个位数,第二遍比较十位数,第三遍比较百位数。
投诉 评论 转载

显示帐号IP属地也须关注用户顾虑继微博后,15日,今日头条、抖音、小红书先后宣布拟上线展示帐号IP属地的功能。平台展示的帐号IP属地为用户最近一次发文或评论时的网络位置,境内展示到省(区、市),境外展示到国家……有哪个镜头是你一直保留,但几乎不用的?我是佳能用户,有五只镜头,这其中还真有一个镜头几乎从来不用。前后买了五只镜头,包括一只小痰盂、大三元中的爱死小白兔和1635,一只24105以及新百微,其中新百微就是那个……电竞旗舰iQOO8系列发布微云台与大底主摄组合,照片不怕糊钛媒体快讯8月17日消息:iQOO8系列在8月17日晚上发布,升级了电竞级全感操控体验,并搭载独立显示芯片,展现出电竞旗舰的高配置。继引领120W超快闪充迅速普及后,iQOO不……vivo新款5G手机,12GB256GB定价2599元,又一其实,早在上周,vivo就官宣了iQOONeo5活力版的新消息,没有想到的是,vivo非常干脆的在5月24日,用官方微博的方式直接官宣了该机的售价,其中标准版8GB128GB首……从骁龙855缠斗到骁龙888Plus时代,小米iQOO谁领先关注手机圈的朋友都知道,iQOO和小米之间的竞争是非常有意思的。记得当初小米9首发价为2999。没多久之后iQOO一代发布,首发价定在了2998。由于便宜了1元,某些程度上还解……常见的排序算法(下)5。归并排序两个有序数组合并并不难,但是归并的思想确实是这个,但是如何分,分到何时呢?这个名字含义就是分为归和并两个阶段执行先说并吧,并要求是两个已经排序好了……2999元娃界小米历经5年研发迭代春水堂在技术品质上超越日本硅胶娃娃这个产品并不陌生,因为或多或少人们都听过这个名字,但硅胶娃娃又很陌生,因为那种看着像真人,摸着像真人,体验起来也像真人的硅胶娃娃,市场价普遍不低于2万元,高昂的售价使得……华为Mate50抢先实现卫星通讯,iPhone13恐不会搭载根据最新消息,苹果官方已经确认,9月8日,苹果将举行虚拟发布会,iPhone13系列也会随着发布会到来,近期关于iPhone13的爆料已经逐步确定。最近又有消息传出,iPhon……腾讯网易等游戏企业和平台被约谈!强化氪金管控【CNMO新闻】此前,国家新闻出版署出台了史上最严格的防沉迷系统。但是依旧有一些不法分子利用未成年人的单纯、心智不成熟来进行游戏诈骗。这些骗子宣称自己可以帮助未成年用户绕开防沉……安兔兔安卓性能榜造成的困扰选游戏手机还是旗舰机?前两天,安兔兔发布了6月份的各项榜单,其中安卓手机性能榜获得不少人的关注,原因则是排在榜单前两名的机型均是游戏手机,这让很多人出现了选机困难:我想要买一款新机,是否要选游戏手机……Python算法之ampampquot找零钱ampampqu问题:假设只有1分,2分,5分,1角,2角,5角,1元的零钱。在超市结账时,如需找顾客零钱,希望收银员将最少的零钱数找给顾客。那么,给定需要找的零钱数目,如何求得最少的零钱数?……普通家庭选新能源车合适不合适?现如今大家想买车最头疼的就是到底是选燃油车还是选新能源车?那么咱们来一起分析一下吧首先看看大家是选什么价位的车。如果只是选个几万块钱的代步小车,其实没什么比较,开几年也损……
洗碗机用什么洗涤剂产品好?vivoXFold折叠屏外观公布,相机模组采用方圆天阶设计佳能相机自动对焦模式重大成果集中亮相科技创新成就展测试基础Linux查找过滤基本命令总结鸿蒙发布数亿设备升级,史上最大规模迁移,完成3亿装机只剩半年九天利建拟使用自有资金收购北京星球时代电子科技有限公司100iOS15。2。1正式版发布老机型升级焕发活力!新机型更加流传来华为麒麟新消息,事关3nm芯片iQOO2022年03月24日新消息毕业论文如何快速检测查重?SpringBoot使用JdbcTemplate链接Mysq不想秃出的年轻人,买出了百亿赛道一年一度的换机潮来临,收好这个攻略才不会被店员忽悠手机微信群不小心删了?别急!3秒快速找回我们的故事,始于三皇五帝吗?初二读后感北京的春节读后感5胎儿确诊为无脑儿怎么办珠圆玉润,杏眼桃腮,这12位绝色古典美人,长在了中国人的审美从借区块链概念半年吸金亿看概念骗术升级宝宝生日祝福语集锦春季如何养生推荐排毒养颜食谱大暑节气养生与传统文化如何正确认识自己的情绪

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利