递归排序 归并排序 快排

递归

求中点 mid=L+(R-L)/2 mid=L+((R-L)>>1)右移一位更快

子问题等量

mast er公式

T(N) = a*T(N/b)+O(N^d)

T(N):母

T(N/b):子 (是否等量)

a:调用多少次

O(N^d):除去子变量之外的时间复杂度

子问题等量

上面的满足这个公式

T(N)= 2*T(N/2)+O(1)

时间复杂度

归并排序

proress类 2T(N/2)

merge类 两个区域 之往前走 不回退 时间复杂度是O(N)

T(N)= 2T(N/2)+ O(N)

a = 2 , b = 2 d = 1

所以结果

O(N*logN)没有浪费比较行为,比较行为信息保留下来了,变成了有序的东西,所以会向下传递

O(N^2)浪费了大部分的比较行为

小和问题

逆向思维 从逆序数找左边比自己小的数,可以逆向思维找左边比自己大的数,结果是一样的

相等的时候需要先拷贝右组的,这样才能确定右边有几个数比他大

上代码

不会漏掉 不会重复

荷兰国旗问题

快排1.0

最后一个数做划分,小于等于num的在左边,大于num的在右边,把这个数 和大于num的最左侧的数进行交换,然后小于等于num的最右侧数和大于num的数做交换,这样不断地递归,最后就可以排出来顺序。 最差情况O(N^2)

快排2.0 num 最差情况O(N^2)

快排3.0 从中间抽取一个数 放在最右侧,会有很多种 的情况 平均情况的O(N*logN)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值