【算法打卡60天】Day10排序(下):如何用快排思想在O(n)内查找第K大元素?

打卡Day10
学习内容 : 排序(下):如何用快排思想在O(n)内查找第K大元素?

1.归并排序的原理和性能分析
归并排序使用的就是分治思想,分治是一种解决问题的处理思想,递归是一种编程技巧

归并排序的时间复杂度也是 O(nlogn)

2.快速排序的原理和性能分析
快排的思想是这样的:如果要排序数组中下标从 p 到 r 之间的一组数据,我们选择 p 到 r 之间的任意一个数据作为 pivot(分区点)。我们遍历 p 到 r 之间的数据,将小于 pivot 的放到左边,将大于 pivot 的放到右边,将 pivot 放到中间。经过这一步骤之后,数组 p 到 r 之间的数据就被分成了三个部分,前面 p 到 q-1 之间都是小于 pivot 的,中间是 pivot,后面的 q+1 到 r 之间是大于 pivot 的。

归并和快排的区别
归并排序的处理过程是由下到上的,先处理子问题,然后再合并。而快排正好相反,它的处理过程是由上到下的,先分区,然后再处理子问题。

快排的时间复杂度也是 O(nlogn)

小结:
归并排序和快速排序是两种稍微复杂的排序算法,它们用的都是分治的思想,代码都通过递归来实现,过程非常相似。
本文参考【极客时间】专栏《数据结构与算法之美》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容