CS61B - Lec 34 - Quicksort II

本文探讨了快速排序与合并排序的性能对比,分析了避免快速排序最坏情况的策略,包括随机化、智能枢轴选择和内省。介绍了3-scan分区算法的改进和稳定性概念,以及使用QuickSelect算法寻找中位数的方法。

前几天把bearmaps搞定了。(其实还是有些不完美的地方不过应该不是我实现的算法的问题。给了一个完整的前端+后端框架,里面有点bug得慢慢研究)刷了刷题,感觉比一个月前要强不少,谢谢josh hug。
啥时候才能找个工作哎。
本章接上回,将具体的partition和avoid worst case操作。

Quicksort vs. Mergesort

复习一下,quicksort三个步骤:

  1. 设定一个pivot(这里是头部),然后以它为基Partition两部分
  2. quicksort左半部分
  3. quicksort右半部分

最好情况O(N logN),最坏情况O(N2),平均O(N logN)
在这里插入图片描述
几个avoid worst cases的方法:

  • Randomness: 随机挑选pivot或者shuffle一下
  • Smarter pivot selection: 每次选的都是median,那么就是最佳。所以如果计算出median,就能保证复杂度在O(N logN)
  • Introspection: 如果recursion次数太多了,那就换一种sort方式
  • Preprocess the array: 提前检查一下array的情况,判断quicksort的性能,很难。

在这里插入图片描述
1. Randomness
一般不这么做,因为随机数的产生

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值