Lec 34 - Quicksort II
前几天把bearmaps搞定了。(其实还是有些不完美的地方不过应该不是我实现的算法的问题。给了一个完整的前端+后端框架,里面有点bug得慢慢研究)刷了刷题,感觉比一个月前要强不少,谢谢josh hug。
啥时候才能找个工作哎。
本章接上回,将具体的partition和avoid worst case操作。
Quicksort vs. Mergesort
复习一下,quicksort三个步骤:
- 设定一个pivot(这里是头部),然后以它为基Partition两部分
- quicksort左半部分
- 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
一般不这么做,因为随机数的产生

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

被折叠的 条评论
为什么被折叠?



