专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Python快速排序和归并排序

  快速排序(Quicksort)
  快速排序,是每次找一个数字(一般是列表的第一个元素)作为中间值,将小于这个中间值的元素都放在左边,比这个中间值大的放在右边。然后,对左边和右边的子序列进行递归操作,即可实现排序。只有一个元素的序列是有序的。
  将列表中第一个元素设定为基准数字,赋值给mid变量,然后将整个列表中比基准小的数值放在基准的左侧,比基准到的数字放在基准右侧。然后将基准数字左右两侧的序列在根据此方法进行排放。定义两个指针,low指向最左侧,high指向最右侧。然后对最右侧指针进行向左移动,移动法则是,如果指针指向的数值比基准小,则将指针指向的数字移动到基准数字原始的位置,否则继续移动指针。如果最右侧指针指向的数值移动到基准位置时,开始移动最左侧指针,将其向右移动,如果该指针指向的数值大于基准则将该数值移动到最右侧指针指向的位置,然后停止移动。如果左右侧指针重复则,将基准放入左右指针重复的位置,则基准左侧为比其小的数值,右侧为比其大的数值。
  首先,对于第一个元素进行操作。调整后的列表中,该元素左边的元素都比它小,右边的元素都比它大:alist〔3,8,5,7,6,9,2,1,4,6,3,3,2〕使用重复值更严谨defquicksort(alist):left0第一个元素下标rightlen(alist)1最后一个元素下标循环过后的序列中,要确保小于等于基准值的数字在基准值右侧,大于基准值的数在其左侧whileleftright:先偏移right,此时基准值3位于left对应的位置whileleftright:ifalist〔right〕alist〔left〕:right1如果right对应的值比基准值大,不需要操作,比较下一个数字else:如果right对应的值比基准值小(或等于),则将其与基准值交换位置alist〔right〕,alist〔left〕alist〔left〕,alist〔right〕left1因为原来基准值的位置left的元素已经检查过了,不需要重复检查,所以直接去下一个元素即可breakwhileleftright:先偏移left,此时基准值3位于right对应的位置ifalist〔right〕alist〔left〕:left1如果left对应的值比基准值小或者相等,不需要操作,比较下一个数字else:如果left对应的值比基准值大,将其于基准值交换位置alist〔right〕,alist〔left〕alist〔left〕,alist〔right〕right1因为原来基准值的位置right的元素已经检查过了,不需要重复检查,所以直接去下一个元素即可breakprint(left,right)55returnalistprint(quicksort(alist))〔2,3,3,1,2,3,9,6,4,6,7,5,8〕
  经一次操作后,左右两侧的索引都到了5的位置。接下来,我们对左右两部分的列表进行递归,即可实现快速排序:alist〔3,8,5,7,6,9,2,1,4,6,3,3,2〕defquicksort(alist,start,end):leftstartrightendwhileleftright:whileleftright:ifalist〔left〕alist〔right〕:right1else:alist〔left〕,alist〔right〕alist〔right〕,alist〔left〕left1breakwhileleftright:ifalist〔left〕alist〔right〕:left1else:alist〔left〕,alist〔right〕alist〔right〕,alist〔left〕right1break上述为核心操作,需要将核心操作递归左右到左右子序列中ifstartleft1:结束递归条件:当左侧只剩一个元素或没有元素时quicksort(alist,start,left1)将sort作用到左侧序列中ifright1end:结束递归条件:当右侧只剩一个元素或没有元素时quicksort(alist,right1,end)将sort作用到右侧序列中returnalistquicksort(alist,0,len(alist)1)〔1,2,2,3,3,3,4,5,6,6,7,8,9〕归并排序(Mergesort)
  归并排序采用分而治之的原理:将一个序列从中间位置分成两个序列;在将这两个子序列按照第一步继续二分下去;直到所有子序列的长度都为1,也就是不可以再二分截止。这时候再两两合并成一个有序序列即可。
  如何合并?
  下图中的倒数第三行表示为第一次合并后的数据。其中一组数据为48,57。该两组数据合并方式为:每一小组数据中指定一个指针,指针指向每小组数据的第一个元素,通过指针的偏移指定数据进行有序排列。排列情况如下:p1指向4,p2指向5,p1和p2指向的元素4和5进行比较,较小的数据归并到一个新的列表中。经过比较p1指向的4会被添加到新的列表中,则p1向后偏移一位,指向了8,p2不变。p1和p2指向的元素8,5继续比较,则p2指向的5较小,添加到新列表中,p2向后偏移一位,指向了7。p1和p2指向的元素8,7继续比较,7添加到新列表中,p2偏移指向NULL,比较结束。最后剩下的指针指向的数据(包含该指针指向数据后面所有的数据)直接添加到新列表中即可。
  归并排序使用Python代码实现:alist〔3,8,5,7,6,9,2,1,4,6,3,3,2〕defmergesort(alist):nlen(alist)递归结束条件ifn1:returnalist将序列分成左右两部分,递归排序midn2leftmergesort(alist〔:mid〕)rightmergesort(alist〔mid:〕)将指针归零leftpointerrightpointer0result〔〕用于存放排序好的结果比较指针位置的数字,较小的放到结果中,并依次移动指针whileleftpointerlen(left)andrightpointerlen(right):ifleft〔leftpointer〕right〔rightpointer〕:result。append(left〔leftpointer〕)leftpointer1else:result。append(right〔rightpointer〕)rightpointer1将左右两边剩余的元素直接放到结果中result。extend(left〔leftpointer:〕)result。extend(right〔rightpointer:〕)将结果返回returnresultprint(mergesort(alist))〔1,2,2,3,3,3,4,5,6,6,7,8,9〕

巨轮智能扭亏为盈预计2022年净利润2700万元4000万元1月29日晚间,巨轮智能(SZ002031)发布2022年度业绩预告,公司预计2022年度实现净利润2700万元4000万元,同比扭亏为盈。公告提及,公司2022年度扭亏的原因为报人的尊严重要还是生活重要?人的尊严重要还是生活重要?这个话题不能一概而论,要根据人的身体状况和年龄等特征的具体情况,作出具体的选择和解释。一身体健康的成年人,尊严比生活更重要一个健康的成年人,必须树立自己的秦州区玉泉观大景区春节旅游强势复苏新天水讯通讯员马岚今年春节假期,秦州区玉泉观大景区张灯结彩,年味十足,游客纷至沓来,游客接待量反超2019年,游客接待量同比增长30。5,门票收入同比增长25。9,景区旅游强势复苏景区里的秦桧雕像,每年要挨多少个耳光?每到逢年过节,全国各地有秦桧跪像的景区总是脆响不绝。不过响声并非来自游客手中的鞭炮,而是他们打向秦桧的耳光。在有的地方,这是一种风俗。有的地方,则被认为是低俗。人们是如此急切想要秦愿时光不老在小区经常路过的一条小道旁,有两位老人很喜欢坐在旁边的石桌上下跳棋。因为不知具体姓氏,就暂称为甲乙老人吧。其中甲我认得出,感觉应该快90岁了吧,是搬来现小区之前就和我住同一个小区的东莞儿童公园集合!全部免费!玩足一日都不够!东莞儿童公园从市中心再到大自然里无处不在的儿童游乐区域已经成为了标配而且一个比一个卷,一个颜值比一个高几乎满足轻遛娃的一切想象松弛感满满东莞不完全儿童公园DONGGUAN建议收藏新漳州城的时光镜像那一日,查尔斯。威廉。华生带着他的照相机来到漳州河畔,漳州是他中国和日本之旅中的一站。漳州河畔,他只是过客,他的拍下镜像,在一百年后,却成了许多人的乡愁。(查尔斯。威廉。华生摄)镜鹏城新春似锦共赏梅好时光成片开放的梅花,让人仿佛置身粉红花海,市民用手机记录下美丽瞬间。梅花随风摇曳,淡淡花香浮动,令人沉醉。梅花竞相开放,市民在暖阳下观赏梅花。本版图片均由深圳晚报记者陆颖摄读特客户端深微信号被封了,里面的几万块钱怎么办?不要急,教你一招轻松取出现如今微信已经拥有10亿用户,成为了国内最受欢迎的社交软件。而微信的规则自然也是比较严格的,可能有不少朋友因为无意中触犯了微信规则,然后就被封号了。那么问题来了,如果微信号被封,里你在,我在,最美好的懂得也在,便是生命中最好的时光那远处飘来的白云,伴随着灿烂烂的阳光,时光如水,总是无言,一月,匆匆而去,二月,踏着春的气息徐徐而来。静静地放飞灵魂,浅浅地呼吸着,淡淡地陶醉着,守着一颗宁静的心,躲开红尘的喧嚣,穿越时光的爱今早上天气凉爽,蓝天白云夹杂着微微凉风。让人心情舒爽。最让人高兴的是我梦见妈妈了!妈妈于二零二零年离开了我们,当初由于新冠没能回国见妈妈最后一面,也成了我一生中永久的遗憾。我梦见在
牢记三点,时来运转人在走运之前会有几个变化,只要占一个,就很有可能时来运转!第一,求稳。宁走十步远,不走一步险!做事情万万不可急于求成,要学会稳中求胜。如果一件事冥思苦想了半天,还是有很多顾虑,脑海每天积累一些好句子1201人一旦开始躲藏就很难停下来了,这点我始终深信不疑。袁哲生2长大后才发现,砸水球比赛第一个所砸的人,不是因为你讨厌他,而是因为你眼里只有他。佚名3要最希望的事能实现,还是先对它绝望男人过了60岁,别和亲戚走得太近,过来人告诉我们为什么前言人与人之间,不管在任何时候都需要保持一定的距离,长时间的在一起其实就会产生反感的局面,最好就是若即若离,特别是和亲戚之间,有时候我们也要知道有些事情不能够长期接触。掌握正确的生且看红尘万般愁,世上无知己,天下难逢一白头几度秋,且看红尘万般愁,世上无知己,天下难逢一白头。休言倭寇侵疆土,难忘卢沟起战尘,且看今朝强盛日,风流不减旧时人。大漠起狼烟,千古风流谁比肩,铁马金戈热血洒边关。一声长啸人间四月什么样的人算是真正的人精?1升职加薪特别快。2不会久居人下。3跟谁都能聊上几句。4做事果断决绝,从不拖泥带水。5敢于跟别人对视,敢于直视别人的眼睛。6时时刻刻都有心眼,不觉得累。7有很多朋友,人脉非常广。8高质量的爱情走心文案一喜欢是一见钟情的热烈,是始料未及的欢愉,是日久动心的温柔,也是念念不忘的惊喜。二20岁时,相信爱情会天长地久25岁时,期待爱情能天长地久,30岁时,便知道天长地久,可遇而不可求。秋雨八二年的雨季40年前的雨,也是落在这样的一个秋季。苦寒凄厉的雨也是这般冰冷。不知翻过了几座山,几道梁,沟壑中雨水汇成了湍湍急流,冲刷着泥沙,小石子冲打在腿上,雨水不时糊住眼睛。衣服太牵挂一个人的时候,爱也会成为一种负担好想你,但路还要走,也许前面还有更迷人的风景。擦干眼泪,我会走自己的路,如果你那么值得爱,我会永远想念你,谢谢你陪我走。如果你不值得,我会像不认识你一样甩掉你,你是我年轻无知时犯过心思日落的昏黄梳理着时间的羽翼在划过天边的时候涂着一抹一抹的红安享着宠溺的摩挲飘着一缕一缕的火烧云树梢上的静谧和暗下来的绿多少年了最远到了童年时仰起的脸一个辗转依然是遥遥的地平线和鸟儿开着小汉和车友们自驾绝美风景线大西北环线先说说为啥自驾大环线,这还得超级感谢比亚迪的大力支持,因为比亚迪给补贴,所以才会有了这次自驾之旅!开始车友会里面说要进藏的,但是好像大家都没有那么多时间,于是选定了大西北环线!我们广东最小城市,松弛感爆表了海滨公路延伸至海角观光巴士转入下一道弯高楼大厦和海滩融为一体不远处的日月贝在阳光下闪闪发亮这里就是珠海广东人对珠海的熟悉无需多说,在与珠海共同成长的岁月里,这座海滨城市从自然原始的
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网