应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

数据结构与算法快速排序

  一、定义
  同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。
  不同的是,冒泡排序在每一轮中只把1个元素冒泡到数列的一端,而快速排序则在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列一边,比它小的元素移动到数列的另一边,从而把数列拆解成两个部分。
  这种思路就叫作分治法。
  二、思路
  1、基准元素的选择
  基准元素,英文是pivot,在分治过程中,以基准元素为中心,把其他元素移动到它的左右两边我们可以随机选择一个元素作为基准元素,并且让基准元素和数列首元素交换位置。
  2、元素的比较
  选定了基准元素以后,我们要做的就是把其他元素中小于基准元素的都交换到基准元素一边,大于基准元素的都交换到基准元素另一边。
  (1)双边循环法
  首先,选定基准元素pivot,并且设置两个指针left和right,指向数列的最左和最右两个元素
  接下来进行第1次循环:
  从right指针开始,让指针所指向的元素和基准元素做比较。
  如果大于或等于pivot,则指针向左移动;
  如果小于pivot,则right指针停止移动,切换到left指针;
  轮到left指针行动,让指针所指向的元素和基准元素做比较。
  如果小于或等于pivot,则指针向右移动;
  如果大于pivot,则left指针停止移动左右指针指向的元素交换位置。
  由于left开始指向的是基准元素,判断肯定相等,所以left右移1位。
  由于74,left指针在元素7的位置停下。这时,让left和right指针所指向的元素进行交换。
  接下来,进入第2次循环,重新切换到right指针,向左移动。right指针先移动到8,84,继续左移。由于24,停止在2的位置。
  (2)单边循环法
  单边循环法只从数组的一边对元素进行遍历和交换。
  开始和双边循环法相似,首先选定基准元素pivot。
  同时,设置一个mark指针指向数列起始位置,这个mark指针代表小于基准元素的区域边界。
  接下来,从基准元素的下一个位置开始遍历数组。
  如果遍历到的元素大于基准元素,就继续往后遍历如果遍历到的元素小于基准元素,
  则需要做两件事:
  第一,把mark指针右移1位,因为小于pivot的区域边界增大了1;
  第二,让最新遍历到的元素和mark指针所在位置的元素交换位置,
  因为最新遍历的元素归属于小于pivot的区域首先遍历到元素7,74,所以继续遍历。
  接下来遍历到的元素是3,34,所以mark指针右移1位
  随后,让元素3和mark指针所在位置的元素交换,因为元素3归属于小于pivot的区域。
  按照这个思路,继续遍历,后续步骤如图所示
  三、代码实现
  1、双边循环法importjava。util。Arrays;快速排序:双边循环法publicclassQuickSort{publicstaticvoidquickSort(int〔〕arr,intstartIndex,intendIndex){递归结束条件:startIndex大于或等于endIndex时if(startIndexendIndex){return;}得到基准元素位置intpivotIndexpartition(arr,startIndex,endIndex);根据基准元素,分成两部分进行递归排序quickSort(arr,startIndex,pivotIndex1);quickSort(arr,pivotIndex1,endIndex);}分治(双边循环法)paramarr待交换的数组paramstartIndex起始下标paramendIndex结束下标returnprivatestaticintpartition(int〔〕arr,intstartIndex,intendIndex){取第1个位置(也可以选择随机位置)的元素作为基准元素intpivotarr〔startIndex〕;intleftstartIndex;intrightendIndex;while(left!right){控制right指针比较并左移while(leftrightarr〔right〕pivot){right;}控制left指针比较并右移while(leftrightarr〔left〕pivot){left;}交换left和right指针所指向的元素if(leftright){intparr〔left〕;arr〔left〕arr〔right〕;arr〔right〕p;}}pivot和指针重合点交换arr〔startIndex〕arr〔left〕;arr〔left〕pivot;returnleft;}publicstaticvoidmain(String〔〕args){int〔〕arrnewint〔〕{4,7,3,5,6,2,8,1};quickSort(arr,0,arr。length1);System。out。println(Arrays。toString(arr));}}
  2、单边循环法importjava。util。Arrays;快速排序:单边循环法publicclassQuickSort{publicstaticvoidquickSort(int〔〕arr,intstartIndex,intendIndex){递归结束条件:startIndex大于或等于endIndex时if(startIndexendIndex){return;}得到基准元素位置intpivotIndexpartition(arr,startIndex,endIndex);根据基准元素,分成两部分进行递归排序quickSort(arr,startIndex,pivotIndex1);quickSort(arr,pivotIndex1,endIndex);}分治(单边循环法)paramarr待交换的数组paramstartIndex起始下标paramendIndex结束下标returnprivatestaticintpartition(int〔〕arr,intstartIndex,intendIndex){取第1个位置(也可以选择随机位置)的元素作为基准元素intpivotarr〔startIndex〕;intmarkstartIndex;for(intistartIndex1;iendIndex;i){if(arr〔i〕pivot){mark;intparr〔mark〕;arr〔mark〕arr〔i〕;arr〔i〕p;}}arr〔startIndex〕arr〔mark〕;arr〔mark〕pivot;returnmark;}publicstaticvoidmain(String〔〕args){int〔〕arrnewint〔〕{4,7,3,5,6,2,8,1};quickSort(arr,0,arr。length1);System。out。println(Arrays。toString(arr));}}
  四、复杂度
  时间复杂度:O(nlogn)
  空间复杂度:O(1)
  稳定性:非稳定性排序

为什么说,人间最美在四月?绿水、青山、落雨,造就了乡村四月独特的风景。春日赏花,悦的是目,美的是心,怡的是情,追求的是美好!河源青州镇樱桃人间四月天,青州樱桃花开。樱桃花花色幽香艳丽,……血管堵塞,3个行为或是祸首,头部频繁出现3个现象,需早做检查人人都惧怕癌症,知道癌症的凶险性,对健康及寿命造成的影响较大,因此,对于预防癌症越来越重视。却不知道有种疾病比癌症还要狠,多数人发生后,都给身体带来了较大的打击。这种疾病就是心……02!北京队爆冷出局!秦晓雯面色难看,雅尼斯和林书豪该走了3936,北京首钢和吉林队上半场打了一个五五开,前者领先一个球!这场比赛谁都输不起,北京队输球就回家,吉林队输球大概率第三局更加赢不了,所以双方均没有退路可言。这个24分钟,可……河南男孩喜欢大伯家的满月小奶狗,怕妈妈不让养装兜里带回家顽皮的孩子的天性之一,当孩子慢慢有了自己的主见之后,他们也会有很多属于自己的小秘密。天性趋势他们做自己喜欢的事情,同时理智的一面也会提醒他们,并不是每个人都会喜欢他们要做的事,……国际油价接连下跌!国内汽油站前瞻989592预计下跌两毛时间过得真的特别的快,转眼间2022年六月份就要过去了,还记得在前几天的时候国内油价迎来了第11轮油价调整,经过那一次油价调整后,很多人对于油价的上涨已经看习惯了,觉得油价上不……新品潮集中618爆发,京东电器线下门店成为首发主阵地作为忙碌而精致的上班族,孟先生对家电选购要求很高,恰逢新居装修完毕外加618大促来临,孟先生在空闲之余去了一趟京东电器南京新街口店,把家里缺少的家电一口气都敲定下来。除了中高端……2022年垃圾食品公布,酸奶上榜了?其中有几样是你爱吃的?如今,人们对于饮食健康问题越来越关注,健康饮食也是人们非常关注的问题。但是,人们生活水平的不断提高,人们的饮食观念和养生观念,也发生了翻天覆地的变化,随着食物的多种多样化……火星上的一年毅力号火星车在地质探索上大获成功自一年前登陆火星以后,美国宇航局的毅力号火星车已经穿越了超过3公里宽的岩石地形,利用自带的飞行棋完成了火星上的第一次飞行,并收集了六块珍贵的岩石样本。如果一切顺利,这些样本有一……刘芸没逃过中年发福,抹浓妆穿黑色紧身裙,依旧没掩盖住粗腰粗臂女人最怕的就是变老和发福了!这两样,基本上就没什么好的办法去阻止!所以不少人就会选择在穿衣打扮上去改变,来掩饰这些变老的事实!而刘芸虽然相比来说还是很年轻的一个女明星的,……华为鸿蒙3。0要上市了,对不起还是不能5G图片来自华为微博本月27号,华为将要发布鸿蒙3。0,华为鸿蒙的万物互联给行业指明了方向的同时,手机芯片的限制一直无法使用5g通讯网络,在市场上千元机都能支持5g的现状下,……资讯定义未来家华为全屋智能高尔夫品鉴会圆满成功智慧互联,智慧空间,华为全屋智能,点亮你的智慧生活。华为全屋智能,以打造全场景智慧空间、将数字化生活带入每个家庭为理念,以鸿蒙操作系统为基石,依托连接、交互、计算、生态四……旗舰手机大跳水?3款目前最值得入手的手机,口碑好价格还不贵手机是个消耗品,没过几年就会淘汰过时,随着时间的推移,价格也会有所调整。现在新机即将发布,旗舰手机也迎来一波大跳水,性能依旧强劲,使用个3、5年不成问题。新机会带来更好的……
毛主席四次登故宫城墙而不进,死后也不愿葬八宝山,这是为何?1975年7月,周总理的膀胱癌已经恶化到晚期,感知自己没有多少日子的周总理,提出要见朱老总一面,因为总理当时身体不允许,二人只促膝长谈了半个小时。临走起身之前,朱老总深情地望着……快递大战,歇一歇再打文荆玉编辑杨旭然出品tidebiz快递市场的火热和资本市场的追捧正在形成一种和谐共振。经历了惨痛的价格战后,快递行业正在重新吸引市场的关注。11月17日……国内首个自主CPU北大众志的产业化之路近年来,在国家政策的驱动下,计算机产品国产化替代进入落地实施阶段,说起计算机产品国产化替代,永远避不开的话题就是国产CPU,今天就来聊一聊具有自主知识产权的中国芯北大众志863……女足夺冠,世间尽是锦上添花者,质疑支付宝奖金女足夺冠固然是值得骄傲的,值得奖励的,几千万在当今的中国而言,根本不算什么。这里简单统计至少有以下的:支付宝1300万,中国足协或超1000万,蒙牛千万现金,亚足联100……梦华录保剑锋打酱油的皇帝,却是顾盼生辉最大的CP头儿文宸曦微凉《梦华录》爆火,和这部剧的选角有直接关系,除了主演刘亦菲、陈晓、柳岩、林允等,就算是在剧中打酱油的角色,都大有来头,比如在《梦华录》中饰演皇帝的保剑锋。《……曼联独狼又不传球!面对门将强行起脚被挡出,C罗2次举手你传啊在曼联,格林伍德是公认的独狼,因为场外的事,他应该很长时间不能为球队出场了。不过曼联的独狼走了一个,还有一个,他就是拉什福德,本场曼联被米德尔斯堡淘汰,拉什福德绝对是罪人之一。……新买固态硬盘,如何实现完整克隆旧盘SSD快速对拷?手把手速通有钱鼓捣PC了,没考虑显卡?哦,换了一块新SSD,你很明智呀!以我为例,比起将能再战三年的1066显卡换成肾部剧痛的智商价3060,当然还是我PCIe3。0的SSD升级到……直击冬奥北京冬奥会开幕式上七位火炬手都有谁?2月4日晚,北京冬奥会举行开幕式。在圣火点燃环节,七名火炬手携带六把火炬进行最后的接力,其中,最后一支火炬由一男一女火炬手共同传递。所有火炬手都由中国运动员担任,他们出生……明星年夜饭,张艺兴丰盛,张杰精致关晓彤豪华,都不及郭晶晶亮眼红红火火过大年明星年夜饭,张艺兴丰盛,张杰精致,关晓彤豪华,都不及郭晶晶的亮眼有钱没钱回家过年,在阖家团圆举杯同庆新年的时候,晒年夜饭似乎成为了一种时尚。不管是普通……Vue动态组件ampampamp插槽ampampamp自定义一、动态组件1。什么是动态组件动态组件指的是动态切换组件的显示与隐藏。2。如何实现动态组件渲染vue提供了一个内置的组件,专门用来实现动态组件的渲染。示……赢了就是完成既定目标,输了就是练兵。足协你有脸吗?包机包酒店自带厨师,还像流浪的孤儿,你们练兵真的太辛苦了,我相信国内很多球迷都想去辛苦下,看到这个新闻气就不大一处来,国家为了世界杯付出了多少,规划球员花了多少,而到足协就是练……一个人没什么不好一个人买票,问路,坐车,一个人找酒店,办理住宿,一个人自言自语,问自己先去哪里,一个人欣赏风景,和自己讨论往何处去,一个人微笑,夸赞路……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网