十大经典排序(3)快速排序
快速排序概念
快速排序 (Quik Sort)是从冒泡排序算法演变而来的,实际上就是在冒泡排序基础上的递归分治法 。快速排序在每一轮挑选一个基准元素,使得比其大的元素移动到一边,比其小的移动到另一边。 算法原理
具体步骤
1、取一个数组的arr[l+(r-l)/2] 作为基准元素。
2、数组分为两部分,左边的小于基准元素 ,右边的大于基准元素 。
3、左右两边各边递归,更新基准值。
代码 //升序 void quik_sort(vector&arr, int l, int r) { //判断边界,如果里面什么都没有就不用执行了 if (l >= r) return; //取分界点 int i = l - 1, j = r + 1; //取基准元素 int x = arr[(l+r)>>1]; while(i < j) { //左指针向右移动,只到arr[i] >= x (边界) do i++; while (arr[i] < x); //右指针向左移动,只到arr[j] <= x (边界) do j--; while (arr[j] > x); //交换arr[i],arr[j] if (i < j) swap(arr[i], arr[j]); } //左部分做partition quik_sort(arr, l, j); //右部分做partition quik_sort(arr, j + 1, r); } //降序------ void quik_sort(vector&arr, int l, int r) { //判断边界,如果里面什么都没有就不用执行了 if (l >= r) return; //取分界点 int i = l - 1, j = r + 1; //取基准元素 int x = arr[(l+r)>>1]; while(i < j) { //左指针向右移动,只到arr[i] <= x (边界) do i++; while (arr[i] > x); //右指针向左移动,只到arr[j] <= x(边界) do j--; while (arr[j] < x); //交换arr[i],arr[j] if (i < j) swap(arr[i], arr[j]); } //左部分做partition quik_sort(arr, l, j); //右部分做partition quik_sort(arr, j + 1, r); }快速排序特性
时间复杂度:O(N*logN)
空间复杂度:O(logN)
稳定性:不稳定
腾讯牵头首个区块链数字藏品国际标准立项读创深圳商报记者陈姝记者近日获悉,基于区块链的数字藏品服务技术框架国际标准项目成功获得立项。据了解,该项目由腾讯牵头,联合蚂蚁集团信通院北京邮电大学之江实验室等产学研机构共同提出,
极米发布100英寸4K全色激光电视挑战OLED电视2月10日上午,极米官微宣布,将于2月17日发布新款激光电视极米A3。官方称,极米A3是一款100英寸4K全色激光电视,号称能挑战OLED电视的色彩表现。我们知道,相比电视屏幕,投
2022支付展望(二)转型路口的支付拥抱数字人民币积极布局saas市场中国网财经2月7日讯(记者安然朱玲)随着支付监管从严,行业毛利率普遍降低,部分支付机构甚至面临生存难题。1月26日,央行官网已注销许可机构页面显示,河北一卡通上海便利通锦江国际上海
第一次用苹果手机是什么样的感觉?第一次用iPhoneX,就感觉它是一部艺术品,双手捧在手心,仔细端详,并陶醉其中。16年买的7P吧,花了快上万,那时候苹果都是装逼的代表啊,同学朋友好多都用安卓的,没几个用苹果,那
Apple不将面容ID带到Mac的真正原因我们经常谈论我们希望在Mac上使用面容ID。使用它登录我们的计算机是一回事,但能够快速可靠地登录应用程序和服务,自动填写表单,甚至不用举起手指,将是一种彻头彻尾的神奇体验。最新Ma
新年首场发布会最便宜的5Giphone不远了!搭配A152月8日,据彭博社马克古尔曼消息,苹果计划今年3月8日举行春季新品发布会,发布形式与过去两年的苹果发布会基本一致,还是以线上为主。要知道,苹果推出的最便宜的5G手机iphone12
iPad配件分享新年新自己的必备好物买来iPadpro已经很久了,当初就是种草了它的手写笔。家里已经有好几个iPad了,都是用来观看视频。所以后来没关注过。某一天,在旗舰店瞟见pro的时候,觉得好神奇啊,那支电容笔随
睡觉也能测血压!GTR3Pro自动夜间血压筛查上线去年10月,华米召开新品发布会,发布了第三代GTR和GTS手表,分别命名为Amazfit跃我GTR3Amazfit跃我GTS3,售价均为899元。近日,Amazfit跃我GTR3迎
冬奥会定制版iPhone上线,售价4w起冬奥会是最近特别热门的活动,没有之一,很多品牌都会蹭其热度,但是让疯师傅感到意外的是,iPhone也是其中一个。奢侈品品牌CAVIAR推出了两款冬奥会定制版iPhone13Pro,
NFT精神史罐头青蛙和平凡人的15分钟英雄梦想文史中(零)9527和7523在唐伯虎点秋香的世界里,9527只是一个家奴。但在某个赛博世界,9527却等于34万美元。下面这个头像,带着瓜皮帽抽着烟的家伙,就是全世界最火的NFT
UE4界面工作笔记(一)1。给变量命名时,要简洁,变量名不宜过长。比如WINDOWTYPEYXLMBATTLEFILEDWINWIDGET145,是不可取的,名字太长容易混淆。2。关于修改代码的迁入迁出问