algorithm - 3路分区快速排序稳定吗?
解决方案
不,三向快速排序也不稳定。
例如,如果arr[i]>pivot and arr[j]<pivot
,那么这些值将被交换,下一个比较将是arr[i+1]
和arr[j-1]
。现在如果arr[i]==arr[i+1]
,那么我们发现在交换之后,这两个值的顺序已经颠倒了。
3-way 算法仅对等于主元的值进行不同处理,但对于不同于主元的值(如上例),算法保持不变,因此该算法不提供稳定的排序.
推荐阅读
- c# - EF Core 映射错误的属性名称
- xsd - xml:使用条件属性
- ffmpeg - 如何在 macos 上为 ffmpeg 启用 libx264
- google-cloud-platform - Gcloud 在单个命令中覆盖区域、区域和机器类型
- android - 使用flutter create创建android文件夹
- c# - c#将一行代码从列表写入数组
- javascript - 创建标签时如何防止使用onclick?
- haskell - Haskell 守卫是按顺序评估的吗?
- swift - 如何在 SwiftUI 中禁用“显示标签栏”菜单选项
- laravel - 如何在 lumen 5.7 中记录所有 api 查询