快速排序的优化

本文探讨了快速排序的优化方法,包括采用插入排序处理小数组,通过三值交换选择中轴,以及针对重复元素的优化策略。通过这些优化,可以提升快速排序在特定情况下的效率和稳定性。
摘要由CSDN通过智能技术生成

快速排序优化

​ 快排是效率很高的排序方法,但仍有一些问题,如稳定性不高,处理小数组效率不算很高,处理重复数字效率低,难以选取最优中轴

主要有三种优化方式

  • 使用插入排序处理小数组

  • 三值交换选取中轴

  • 聚集重复元素

中轴处理

    /**
     * 前 中 后三者排序 并把中轴放在high - 1的位置 如{3,4,2,6,1} 会处理为 {1,4,6,2,3}
     */
    public static void dealPivot(int[] arr, int left, int right) {
   
        int mid = (left + right) / 2;
        if (arr[left] > arr[mid]) {
   
            swap(arr, left, mid);
        }
        if (arr[left] > arr[right]) {
   
            swap(arr, left, right);
        }
        if (arr[right] < arr[mid]) {
   
            swap(arr, right, mid);
        }
        swap(arr, right - 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值