保健励志美文体育育儿作文
投稿投诉
作文动态
热点娱乐
育儿情感
教程科技
体育养生
教案探索
美文旅游
财经日志
励志范文
论文时尚
保健游戏
护肤业界

阿包说算法之排序

  排序的方法有很多,本文主要介绍三种:冒泡排序,快速排序,归并排序。在很多算法中,都会用到递归算法,因此递归不再单独讲。1。冒泡排序
  算法思路
  冒泡排序的思想是最符合常人思维的,比如一个数组:3,6,8,2,1。首先选择第一个数3,然后从后面的数开始遍历,如果比数组第一个数小,就交换位置,否则继续:比如,第一次比较3和6,3小,继续,3和8比,继续,3和2比,2小,就交换3和2的位置,数组变成2,6,8,3,1,这时数组第一个数是2,2和1比,1小,交换2和1的位置,变成1,6,8,3,2,此时第一轮遍历结束,可以看到一轮遍历可以把最小的数选出。
  第二次从第2个数开始遍历,与后面的数比较,就是6依次和8,3比,跟3换位置,然后3和2比,又换位置,次轮结束后1,2,8,6,3。继续下一轮,直到遍历结束。可见第一次把最小的数放到第一位,第二次把第二小的数放到第二位,第N次把第N小的数放到第N位。voidBubbleSort(intarr,intcounts){inttmp0;for(inti0;icounts1;i){for(intji1;jcounts;j){如果后面的数比前面的小,就交换位置if(arr〔i〕arr〔j〕){tmparr〔i〕;arr〔i〕arr〔j〕;arr〔j〕tmp;}}}}intmain(){intarr〔〕{7,3,8,2,9,6,0,2,4,7};BubbleSort(arr,10);for(inti0;i10;i)coutarr〔i〕;return0;}
  最终输出
  0223467789hr说明:冒泡排序的时间复杂度为O(N2),冒泡排序写法可能不一定是跟上面的一样,但是思想是一致的2。快速排序
  算法思路
  快速排序法的思想是把数组的第一个数取出来作为分界点,让数组中小于他的数放在他左边,大于他的数放在他右边,比如53974这组数字,选5为分界点,然后让34在5左边,97在5右边,变成34597然后,对左右两部分34和97,分别继续重复上面的步骤,直到有序。这里可以看出应该用到递归。
  步骤如下,有一串数字3,6,8,2,7,首先把第一个数3取出来作为分界点,然后从最右边开始找小于3的数,7大于3跳过,继续看2,2小于3,就把2放到3的位置,2的位置空出来【2,6,8,,7】,再从左边开始,6大于3,就把6放到原来2的位置,6的位置空出来【2,,8,6,7】,再从右边8开始,8大于3跳过,下一个,是空了,则此轮结束,把3放到空位【2,3,8,6,7】。
  然后对3左右两边的2和8,6,7分别按上面的步骤进行排序,就变成【2,3,6,7,8】voidFastSort(intarr,intcounts){if(counts1)return;intnumarr〔0〕;取数组的第一个数字作为分界点intnullPos0;空位在此intleft1,rightcounts1;左右开始的位置while(true){从右边开始找,直到有小于num的,或者遇到空位就结束while(right!nullPosarr〔right〕num)right;if(rightnullPos)结束了break;否则就是找到了小的arr〔nullPos〕arr〔right〕;nullPosright;再从左边找,左边的得大于num才挪while(left!nullPosarr〔left〕num)left;if(leftnullPos)结束了break;arr〔nullPos〕arr〔left〕;当前值放到空位nullPosleft;}跳出了,把num放到空位arr〔nullPos〕num;if(nullPos0)有前半段FastSort(arr,nullPos);前半段排序if(nullPoscounts1)有后半段FastSort(arrnullPos1,countsnullPos1);后半段排序}intmain(){intarr〔〕{7,3,8,2,9,6,0,2,4,7};FastSort(arr,10);for(inti0;i10;i)coutarr〔i〕;return0;}
  最终输出
  0223467789hr说明:这种排序的方式是一种分治的思想,把大问题拆分成多个解法一样的小问题,这里是把大数组拆成前后2个解法一样的小数组,分成两部分的分治法又叫二分法,但是跟下面的二分法排序又不一样。
  另外,快速排序代码会有多种不同的写法,但是思想是一致的,快速排序中有2个while,在极端情况下(比如数组是有序的,会遍历整个数组)的算法复杂度是O(N2),一般情况下是O(NlogN),但实际上乱序的情况下,很快就能跳出while,所以被称为快速排序,此排序最实用,请读者牢记。3。归并排序(二分法排序)
  算法思路
  归并排序思路是:将数组一分为二,再对分出来的2个子数组继续拆分,2分,拆分直到子数组只有一个数字,然后把所有的数字两两组合成有序小数组,最后合成一个完整数组,是典型的二分法,所以又叫做二分法排序
  这里的思想是拆分后就变成有序数组(一个数字肯定有序),然后就是对有序数组的合并操作。比如83652,拆分成836,52,继续拆分成8,3,6,5,2。然后8和3组合成38,38和6组合成368,52组合成25,。最后把368和25组合成23568。voidMerge(intarr1,intcounts1,intarr2,intcounts2,intmerge){开始组合inti0,j0,pos0;较小的数给tmp,小的指针,tmp指针while(icounts1jcounts2)merge〔pos〕arr1〔i〕arr2〔j〕?arr1〔i〕:arr2〔j〕;跳出,如果某个数组还有,加到tmp后面while(icounts1)merge〔pos〕arr1〔i〕;while(jcounts2)merge〔pos〕arr2〔j〕;}voidSort(intarr,intcounts,intout){if(counts1)返回条件{out〔0〕arr〔0〕;return;}intmidcounts2;中点作为拆分点intout1newint〔mid〕;intout2newint〔countsmid〕;Sort(arr,mid,out1);左边排序Sort(arrmid,countsmid,out2);右边排序Merge(out1,mid,out2,countsmid,out);左右合并delete〔〕out1;delete〔〕out2;}voidMergeSort(intarr,intcounts){intoutnewint〔counts〕;Sort(arr,counts,out);for(inti0;icounts;i)arr〔i〕out〔i〕;delete〔〕out;}intmain(){intarr〔〕{7,3,8,2,9,6,0,2,4,7};MergeSort(arr,10);for(inti0;i10;i)coutarr〔i〕;return0;}
  最终输出
  0223467789hr说明:归并排序用的是二分法,把数组分成2个子数组分别排序,实际上可以用三分法四分法,把数组分成3个子数组,4个子数组等都可以,读者可以自行思考如何使用三分法归并排序。
  归并排序的时间复杂度是O(NlogN)

初中想象作文假如我克隆了自己假如我克隆了自己随着科技的不断发展,电脑、手机等电子设备已不算什么高科技设备。如今,人们甚至能够复制另外一个自己。假如我克隆了自己,我的生活会发生怎样的改变呢?叮铃……零跑瞄准新能源汽车竞赛下半场近两年来,新能源发展速度喜人,由此也带来产业链的上下游布局的全面提速。这也彰显了智能电动车引领制造业转型升级的龙头地位,以及其肩负巨大的产业责任。在新能源市场中,自主品牌……美丽的冬天作文600字作文一:美丽的冬天冬,一个安静无声的名字。窗外,玲珑剔透的雪在空中纷纷扬扬地飘舞,像一只只翩翩起舞的白蝴蝶。雪片贴在清凉的脸上,像玉一样润。它从空中洒下来,亲吻着久别的大……油价上涨,买车就买新能源?受国际形势影响,国内油价持续升高,油价来到8元时代,以前加满一箱油三百多块,现在加满一箱油都得接近五百元!92加满魂散腿软,95加满倾家荡产,98加满三代还款!虽然多少有调侃的……读书心得日记导语:作为学生,多看书,对自己的写作水平和能力都有很大的提升,还能增加思维能力,以下是小编为大家分享的读书心得日记,欢迎借鉴!篇一:读书心得日记从小,我就喜欢读书。……南瓜灯制作QampA南瓜灯制作QAmp;A猫头鹰的眼睛是什么做的?猫头鹰的眼睛是用迷你南瓜做的,约一个柿子大小,但是比柿子硬多了。眼睛做好时是这个样子。南瓜灯用的是什么蜡烛……最新伤感爱情名言坐在窗前仰望着天空,记忆纷乱,遐想蔓延。于是想起一些生命的困惑,人生是不断成长的过程,在接受幸福与欢乐的同时也接受了伤害和忧郁,我明白这是一件如钢铁般无法骇化的事实,可又徒劳般……英雄一七七零年十二月十六日,路德维希middot;凡middot;贝多芬出生于可隆附近的波恩的一所破旧屋子的阁楼上。他的父亲是一个经常酗酒的男高音歌手,母亲事个仆人,一个厨子的女儿……美媒印度不能挂断中国智能手机的电话来源:环球时报美国华尔街日报中文网5月17日文章,原题:印度不能挂断中国智能手机的电话印度正在调查中国智能手机制造商小米在印度的子公司。小米已向印度法院提起诉讼,指控印度……文明相伴600字作文春节似清晨的一份早餐,而文明则是早餐中的惊喜;春节是冬日的一缕阳光,而文明则是阳光里的温暖;春节是雨后的一道彩虹,而文明则是彩虹的绚丽多姿。题记春节是中国传统文化的……超过智能手机!电动车成为钴最大需求来源去年,电动汽车首次超过智能手机和个人电脑,成为钴需求的主要来源。周二,国际钴业协会(cobaltInstitute)的一份报告显示,随着纯电动汽车和混合动力汽车销量翻番,……生日倒计时的作文要说过生日,大家肯定想:好好吃一顿,买个大蛋糕,好好玩一回,开生日聚会。可是,我姐姐的生日却不一样,让我们来看一看她特殊的生日吧!生日倒计时(一)7月29日今天,妈……
感受自然七年级优秀范文每个人心里都有一幅属于自己的自然图景。下面小编给大家带来感受自然七年级优秀范文。第一篇:久久在城市的钢筋水泥里居住,早已经忘记了大自然的感觉了。少年时候那融合在大自……香山一日游初一作文一:〔香山一日游〕香山一日游400字今天早上,我们五点多就起床了,因为今天我和爸爸妈妈一起去香山玩。吃完饭,爸爸开车带着我们从五环高速到达了香山。到了香山,我们朝小……祝您节日快乐作文100字祝您节日快乐作文100字篇一父亲节今天是父亲节,起先我还不知道来要不是我哥发短信来我还不知道来。一大早我就起来祝爸爸节日快乐。爸爸还说:今天,我们家去搓一顿!这下可……关于奥运的作文奥运的拼搏精神在奥运精神的感召下,世界各路精英齐聚北京(体育健儿、媒体记者、商业巨子、各国首脑),不由让我为奥运精神肃然起敬,为什么奥运会能有如此巨大的感染力和吸引力呢?奥运精神给我们带来何……小小发明家作文600字动物在亿万年的漫长进化过程中,逐步形成了各种奇异的构造,特殊的功能和有趣的习性。人们通过长期的观察和研究,从动物身上得到许许多多极其宝贵的启示。人类按照动物的体型结构和特殊功能……家乡的海作文600字我的家乡在惠州,那里有一片美丽的海,名字就叫十里银滩。早上,太阳从海平线上徐徐升起露出了灿烂的笑容,阳光照在海上,海上波光闪动就像撒满了碎金子一样。这时候也能看到一只只雪……如何在Vue中使用nextTick()vue中组件的(props或state)发生变化时不会立刻在DOM中响应,Vue是异步更新DOM的。所以有时当你修改了组件状态后,立刻获取对应dom对象,会发现获取不到。这个时……童年的抒情作文童年,像珍珠般纯洁,像天空中翱翔的小鸟般快乐,又像一棵永远也长不大的小草,总是那么充满幻想。我虽然13了,但依然盼着六一的到来,依然整天沉浸于玩耍的世界,对于学习总是那么的不屑……阶梯高中作文在日复一日的学习、工作或生活中,大家都尝试过写作文吧,通过作文可以把我们那些零零散散的思想,聚集在一块。那么,怎么去写作文呢?以下是小编整理的阶梯高中作文,欢迎阅读,希望大家能……战胜自己战胜自己江苏省姜堰二附中初一(6)班曹锐杰懦弱,一个简单的心态,当然,人人都有过这样的心理,而我,却过分地依靠它,利用它,它就像一个恶魔附在我体内,使我一次又一次丧失了自我考验……品味劳动初中作文我播种,所以我收获寒风吹落了树枝上摇曳的黄叶,让它埋进了深土,品味劳动作文800。南国的冬天,只剩下一些四季常青的树木,傲然挺立在寒风中。噢,我愿当作那一棵在寒风中褪尽了……无线输电技术备受关注有望加快在家电等领域应用21世纪经济报道记者叶碧华实习生梁饶川广州报道目前我们无线输电产品的产量、产值都不低,从统计数据看,中国企业的数量占全世界比重最高,但自主投入的研发资源非常少,目前还处于……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网