算法与数据结构(7)—— 快速排序(二路、三路)

本文探讨了快速排序在处理包含大量相同元素时可能出现的效率问题,并介绍了二路和三路快速排序的算法思想。二路快排通过调整判定条件避免了元素不平衡,而三路快排进一步将元素分为小于、等于和大于三个部分,尤其适合处理重复元素。通过对三种排序算法的比较,得出三路快速排序在处理重复元素时性能优越的结论。
摘要由CSDN通过智能技术生成

前言:

介绍了快排分界的标志点,选取的随机性会大大降低快排退化成O(n^2)算法的概率。

问题:当包含大量相同的元素的数组时

快排仍会退化成O(n^2)级别的算法

我们之前判断的时候,并没有判断等于的情况~   这样会造成一个结果,把相同的放入左右任何一部分,会造成极其的不平衡,仍会退化成O(n^2)算法~


二路快速排序(Quick Sort 2 Ways)

算法思路:

然后从左到右逐渐遍历整个数组。现在将这两部分放到数组的两端,下标i、j分别进行扫码:

  • 从下标 i这个位置向后扫描, 
    • 当扫描的元素e小于v :则继续向后扫描。
    • 当扫描的元素e大于v:
  • 从下标 j这个位置向前扫描, 
    • 当扫描的元素e大于v :则继续向前扫描。
    • 当扫描的元素e小于v:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值