Python快速排序

来源 :电脑报 | 被引量 : 0次 | 上传用户:liuyantong7
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  排序算法我们之前已经讲过了冒泡排序和选择排序,今天我们就来学习一种新的排序算法:快速排序。快速排序是冒泡排序的改进版本,通过一趟排序将要排序的数据分割成独立的两个部分,其中一部分的所有数据要比另外一部分的所有数据小,然后按此方法对两部分数据分别进行快速排序,整个过程可以递归进行,以此达到整个数据变成有序序列。
  首先我们将排序的元素进行分区,从排序的元素中设置一个基准(基准可以任意设置,但是基本上都是把第一个数字设置为基准),比基准大的元素放在右边,比基准小的元素放在左边,将左右两个分区重复以上步骤直到所有元素都是有序的。所以我们可以把快速排序联想成东拆西补或者西拆东补,一边拆一边补,直到所有的元素都达到有序的状态。
  待排序元素初始状态:



  把5作为与其他元素比较的基准元素,设置两个指针left和right。
  1. 把5拆到一边作为基准元素(第二行数字为元素的初始状态);



  2. right指针从右向左扫描,首先4和5比较,4<5,拆4,补原元素5的空缺位,left指针右移;



  3. 7和5比较,7>5,拆7补元素4的空缺位。right指针左移;



  4. 8和5比较,8>5,保持不变,right指针继续左移;



  5. 5和1比较,1<5补元素7的空缺位,left指针右移,此时left=right,则将基准元素5补入到left/right的位置,结束这一趟拆补过程。



  Python代碼部分:



  第一步:在代码中我们先增加一条需要排序的数列example。并且设置a:为起始位置,b:为末尾位置,接下来开始快速排序定义,head相当于左指针,left相当于右指针,base为基准数。
  第二步:从右往左扫描,通过偏移right指针,寻找比基准数小的元素,当找到比基准数小的元素后,将其赋值给left指针所在的位置。



  第三步:从左向右扫描,通过偏移left指针,寻找比基准数大的元素,找到后,将其赋值right指针所指向的位置。
  第四步:不断重复二三步骤,直到left和right指针重合,这样所有的元素都被扫描一遍了,将基准数赋予重合位置,完成一遍排序,左边的数字比基准数小,右边数字比基准数大。
  第五步:以之前的基准数为分割点,对左右两侧按照以上的方法进行递归,最后排序结束。
  快速排序的效率虽然比冒泡排序高,但是它是一种不稳定排序法:在一组数据中原有A1和A2两个相等数字,不稳定排序算法排序后,可能导致排序之后A2反而在A1之前,原有顺序颠倒,这就称为不稳定排序。
其他文献
卒中后抑郁是指腦血管疾病发生后出现的以心境低落、兴趣下降以及活动能力减退、思维功能迟缓为主要特征的一类情感障碍,如果症状持续2周以上则被称为脑卒中后抑郁症(post-stroke depression,PSD)[1],是脑卒中患者常见并发症之一。国内龙洁等报道,PSD的发生率为34.2%,其中轻度为20.2%,中度10.4%,重度3.7%[2]。PSD对患者恢复健康有消极影响,它降低康复治疗的效果
期刊
摘要:目的:总结分析10例急性心肌梗死并发心源性休克以及顽固性心力衰竭等患者进行主动脉球囊反搏的治疗效果和护理经验。方法 回顾性分析10例患者接受IABP后的临床资料,加强术后观察和护理,预防各种并发症的发生。结果 在IABP循环支持治疗后,改善患者的心肌供血、供氧以及减轻心脏负担。结论 对主动脉球囊反搏的患者实行正确的体位、心理护理、管道护理、皮肤的护理、足背动脉的观察、反搏压的观察及处理等护理
期刊
除蟑螂界的扛把子来啦  關于家中出现一只蟑螂就代表有一万只蟑螂藏在角落里聚会,这种传言过于夸张,但也并无道理。就用常见的德国小蟑螂来举例,它们的寿命在一年左右,小蟑螂出生两个月后,就能像妈妈一样生育自己的孩子。不出意外的话,一只雌性德国小蟑螂在一年内留下的后代可达100000只以上,想想都让人头皮发麻。  所以师姐对比了市面上无数款消灭蟑螂的产品,发现最好用的要数灭蟑螂界的扛把子德国拜耳!德国拜耳
期刊
手机充电为什么要先插充电器?  先插手机,再插电源的话就会产生较大的脉冲电压,它是电路中出现的一种短暂电流,持续百万分之一秒的一种剧烈的波动,长期如此操作会对手机电池,甚至对手机保护板造成损害,最直观的就是影响手机電池寿命。  现在我们所用的手机电池都是锂电池,其实锂电池的循环次数是有极限的,现在市面上的智能手机的电池循环次数大都在几百到一千左右。电池循环次数就是指电量从0到100这样完整的一个周
期刊
炎炎夏日,一直“猫”在空调房中取凉对身体是极为不利的,还是用风扇吹自然风比较健康。对于我们热衷于“鼓捣”的创客一族而言,吹吹风也一定要吹出不一样的境界,比如使用App Inventor编程开发个手机应用程序,远程操控树莓派的智能风扇——既能任意变速,又能定时关机。一、实验器材与连接  所需的实验器材包括:树莓派3B+(带电源线)一块,古德微扩展板一块,风扇模块一个,智能手机一部,公对母异色杜邦线四
期刊
原来酸梅汤可以减肥  吃冷飲并不一定解暑,只是暂时把心里、胃里的火压制下去而已,这样做的结果只有一个——损伤身体阳气,除了今天要推荐的酸梅汤。  《清稗类钞》就有相关的记载,“酸梅汤,夏日所饮,京、津有之。以冰为原料,屑梅干于中,其味酸。京师卖酸梅汤者,辄手二铜盏,颠倒簸弄之,声锵锵然,谓之敲冰盏,行道之人辄止而饮之。”据传,乾隆年间,看着整日满汉全席,吃得肥头大耳的八旗子弟,乾隆下令让御厨们想办
期刊
摘要:2007年我国在财力有限的情况下,制订了国家扩大免疫规划的战略,在原有计划免疫的6种疫苗的基础上,新增加了8种疫苗,采取国家付费,预防15种传染病。在预防接种过程中,能真实反应儿童接种情况的即—儿童预防接种证,通过我县儿童预防接种证的使用现状得出,它的规范化管理和使用直接影响免疫规划接种工作开展的好坏。  关键词:儿童预防接种证;规范化管理;信息完整;杜绝漏种  儿童预防接种证是儿童进行免疫
期刊
不法商家那里网购的高端主机到底有多坑?繼上次一位读者用户花费2000元买了一台某宝的i7级别、二十核、高速内存主机受骗后,今天又有读者来反映同类问题。二哥今天来教一下大家,如何分辨这种套路骗人的所谓i7主机。这类主机一般都有以下几个特点。二哥给大家列举一下:  1. i7多核超线程服务器级别,16核32核永远不嫌多就是不提第几代(目前最新第十代)  2. 大显存独立显卡,老旧的550TI,660T
期刊
摘要:目的:探討综合护理干预对精神病患者生活质量和社会功能的影响。方法:将我院收治的85例精神病患者按照单盲、平行、随机分组法分为两组,对照组治疗期间给予常规护理,观察组在对照组基础上给予综合护理干预,观察两组经不同护理干预后生活质量及社会功能改善情况。结果:观察组躯体生活自理量表、工具性日常生活能力量表及自我健康评价量表评分均明显优于对照组,两组差异有统计学意义(P<0.05)。观察组社会功能缺
期刊
本文将带你通过对下雪天气的特征提取,综合使用Scratch自带素材库,制作夜晚下雪,树冠积雪,天亮雪化的动画。这个实例综合运用了Scratch多项特性,可以帮你加深对Scratch外观特效的理解。一、下雪天气特点提取  下雪是常见的气候,那么我们将其转化为程序,就可以更好地理解程序与现实的相同与不同,明白构建程序需要的特征与可以舍弃的特征。  若我们要模拟下雪,首先要确定程序的演示目标,雪从天上落
期刊