快速排序在最坏情况下的时间复杂度为(快速排序)
你们好,最近小时发现有诸多的小伙伴们对于快速排序在最坏情况下的时间复杂度为,快速排序这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、 快速排序作为与冒泡排序相同的排序(与交换排序相同的排序)而广为人知,因为它解决了冒泡排序只用于比较两个相邻元素,所以在交换两个相邻元素时只能消除一个逆序的问题。
2、 And快速排序通过交换两个不相邻的元素,消除了待排序记录中的多个逆序。即快速排序中的一次交换可以消除多个反向序列。具体思路:从要排序的记录中选择一条记录(通常选择第一条记录,
3、 当然也可以随机划分,这样可以大大提高执行效率快速排序,我们知道的,在O(n))的时间复杂度内找到前k个元素的算法,将其关键字记录为K1,然后将其他关键字小于K1的记录移到前面。
4、 而那些大于关键字K1的被移到后面。经过一趟快速排序,将待排序的序列分成两个子表,最后在两个子表的边界处插入关键字K1。具体实现是使用三层while循环。
5、 最外层的while循环控制行程是否快速,内层的两个while循环用于从左到右扫描大于基准记录关键字的元素和从右到左扫描小于基准记录关键字的元素。
6、 可以用low和high两个指针分别指向当前记录当前从左到右和从右到左扫描的关键词,找到一个就交换。以上是行程的思路快速排序,对以上划分的子表重复以上过程。
7、 直到被划分的子表的长度不超过1。即快速排序的思想,从定义上看快速排序是递归排序。具体代码如下:
8、 #includeiostream
9、 using namespace std;
10、 const int len=7;
11、 Int qk(int a[],int low,int high)//注意快速排序函数的参数,因为每次传递的函数快速排序是把数组分成两部分,第一部分不大于k,
12、 后一部分不小于k,然后对前一部分和后一部分进行//快速排序,所以qk的第二个参数和第三个参数应该是低高。
13、 {
14、 int x=a[低];//选择第一个元素作为基准记录。
15、 while(lowhigh)
16、 {
17、 while(lowhigha[high]=x)
18、 high--;
19、 if(lowhigh)
20、 {
21、 a[low]=a[high];
22、 low++;
23、 }
24、 while(lowhigha[low]=x)
25、 low++;
26、 if(lowhigh)
27、 {
28、 a[high]=a[low];
29、 high--;
30、 }
31、 }
32、 a[low]=x;
33、 return low;
34、 }
35、 void qsort(int a[],int low,int high)
36、 {
37、 if(lowhigh)
38、 {
39、 int pos=qk(a,low,high);
40、 qsort(a,low,pos-1);
41、 qsort(a,pos+1,high);
42、 }
43、 }
44、 void main()
45、 {
46、 int a[len]={7,4,5,1,2,3,6};
47、 cout'快速排序之后的结果是:' endl
48、 qsort(a,0,len-1);
49、 for(int i=0;ilen;i++)
50、 {
51、 couta[i]' ';
52、 }
53、 coutendl;
54、 }
55、 复杂度分析快速排序最好的情况是序列在每一遍排序中分成两部分,表在表中间分成两个大小相同的子表,类似于半搜索,复杂度为O(nlog2n)。
56、 最坏的情况是序列已经排列好了,那么第一遍比较n-1次,第一条记录设置在原来的位置,左边子表为空,右边子表为n-1条记录,第二遍比较n-2次。
57、 第二条记录被设置在原始位置.即此时快速排序,内层的两个while循环没有执行,此时快速排序退化为冒泡排序,比较总数为n*(n-1)/2,复杂度为O(n*n)。
以上就是快速排序这篇文章的一些介绍,希望对大家有所帮助。
免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!
-
作为A股市场中极具代表性的黄金珠宝行业龙头企业,作为中国历史最悠久的珠宝品牌之一,老凤祥(股票代码:600612)...浏览全文>>
-
宝子们,杭州 房子装修完成啦!这次要给大家分享几家设计超赞的装修公司哦。它们各具特色,从空间规划到风格...浏览全文>>
-
欲筑室者,先治其基。在上海,装修房子对于每个业主而言,都是极为关键的一步,然而,如何挑选一家值得信赖的...浏览全文>>
-
2025年以来,联通支付严格贯彻落实国家战略部署,以数字和科技为驱动,做好金融五篇大文章,履行支付为民社会...浏览全文>>
-
良工巧匠,方能筑就华居;精雕细琢,方可打造美家。当我们谈论装修公司时,选择一家靠谱可靠的公司是至关重要...浏览全文>>
-
在当今社会,随着城市化进程的高速推进,建筑垃圾的产生量与日俱增。据权威数据显示,我国每年建筑垃圾产生量超 ...浏览全文>>
-
家人们,在上海要装修,选对公司那可太重要了!古语有云:"安得广厦千万间,大庇天下寒士俱欢颜。"一个温馨的...浏览全文>>
-
近年来,新能源汽车市场发展迅猛,各大品牌纷纷推出各具特色的车型以满足消费者多样化的需求。作为国内新能源...浏览全文>>
-
近年来,随着汽车市场的不断变化和消费者需求的升级,安徽滁州地区的宝来2025新款车型在市场上引起了广泛关注...浏览全文>>
-
随着汽车市场的不断变化,滁州地区的消费者对高尔夫车型的关注度持续上升。作为大众品牌旗下的经典车型,高尔...浏览全文>>
- 安徽滁州途安L新车报价2022款,最低售价16.68万起,入手正当时
- 小鹏G7试驾,新手必知的详细步骤
- 别克GL8预约试驾,4S店的贴心服务与流程
- 安徽阜阳ID.4 CROZZ落地价全解,买车必看的省钱秘籍
- 淮北探岳多少钱 2025款落地价,最低售价17.69万起现在该入手吗?
- 安徽淮南大众CC新款价格2025款多少钱能落地?
- 淮北长安启源C798价格,最低售价12.98万起现在该入手吗?
- 安徽淮南途锐价格,各配置车型售价全解析
- 蒙迪欧试驾预约,4S店体验全攻略
- 沃尔沃XC40试驾需要注意什么
- 滁州ID.4 X新车报价2025款,各车型售价大公开,性价比爆棚
- 试驾思域,快速操作,轻松体验驾驶乐趣
- 试驾长安CS35PLUS,一键搞定,开启豪华驾驶之旅
- 天津滨海ID.6 X落地价限时特惠,最低售价25.9888万起,错过不再有
- 天津滨海凌渡多少钱?看完这篇购车攻略再做决定
- 安徽池州长安猎手K50落地价,买车前的全方位指南
- 山东济南ID.6 CROZZ 2024新款价格,最低售价19.59万起,现车充足
- 试驾海狮05EV,新手必知的详细步骤
- 生活家PHEV多少钱 2025款落地价走势,近一个月最低售价63.98万起,性价比凸显
- 奇瑞风云A9试驾,新手必知的详细步骤