《算法图解》第四章快速排序

1.先介绍了快速排序的思想:分而治之DC(divede and conquer)

2.引入例子加强理解

def quicksort(arr):

     if len(arr)<2:基线条件

        return arr

     else:

        pivot = arr[0]

        less=[i for i in range[1:] ifarr[i]   i  <pivot]

        gretaer = [i for i in range [1:] ifarr[i]   i >pivot]

     return quicksort(less)+[pivot]+quciksort(greater)  递归条件

3.各种算法的大O

4.平均情况和最佳情况

常量:。。。。时间,对二分法和简单排序法影响不大

快速排序依赖于我们选择的基准,不管序列是不是有序的,都继续进行分组,找基准值,判断大小,如果是以开头第一个元素为基准,可能你的栈占用非常大

快速排序的最佳情况是O(log n)层*O(n)判断n次=O(nlogn)

最差情况是O(n)*O(n)=O(n^2)

5小结
D&C将问题逐步分解。使用D&C处理列表时,基线条件很可能是空数组或只包含一个元素的数组。
实现快速排序时,请随机地选择用作基准值的元素。快速排序的平均运行时间为O(nlogn)
O表示法中的常量有时候事关重大,这就是快速排序比合并排序快的原因所在。
比较简单查找和二分查找时,常量几乎无关紧要,因为列表很长时,O(logn)的速度比O(n)快得多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值