【MOOC】快速排序

一、算法概述 

 

主要就是两个方面影响速度

1.选主元

2.分子集

快速排序最好情况:每次选主元都正好中分子集,T(N)=O(NlogN)

 二、选主元

 

 

 三、子集划分

1.先判定左边指针i,直到碰到不符合的位置,停下不动;

2.再开始判定右边指针j,直到直到碰到不符合的位置,停下不动;

3.交换左右指针元素

重复新一轮

 直到最后,

当两个指针都停下来,且此时i>j——i是要找的主元位置

 快速排序的主元选定后,会被一次性放到全局正确的位置上,以后再不会移动

 

 1.如果选择停下来交换,虽然多了很多次无意义的交换,但是最后主元的位置靠近中间,后面的递归操作的时间复杂度较低

2.如果选择不理它,虽然避免了很多次无意义的交换,但是最后主元的位置靠近端点,后面的递归操作的时间复杂度更高

因为有相等元素的交换;

且选主元带有随机性,可能不是该序列中第一个出现的该元素值,但是可能交换到前面;

快速排序是不稳定的排序。 

 四、小规模数据Cutoff

 

五、同一函数接口

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值