《数据结构和算法》排序算法-快速排序

快速排序概述:

快速排序本质是通过把一个数组划分为两个子数组,然后递归地调用自身为每一个子数组进行快速排序来实现的

(使用递归算法对规模非常大的数据项进行排序可能会引起栈溢出,导致存储错误)

快速排序的效率:

快速排序平均执行时间为 O(N*logN)级,最差的情况为 O(N2)

快速排序代码示例:

/**
 * @Description :快速排序
 * @Author: YinRong.Wu
 */
public class QuickSort {
    private long[] theArray;

    public QuickSort(long[] theArray) {
        this.theArray = theArray;
    }

    public void recQuickSort(int left, int right) {
        if (right-left<=0) return;
        long pivot=theArray[right];
        int partition = partitionIt(left, right, pivot);
        recQuickSort(left,partition-1);
        recQuickSort(partition+1,right);

    }


    /**
     * @param left  传递0 也就是数组的开始索引
     * @param right 数组的长度作为右边开始位置
     * @param pivot 特定值
     * @return
     */
    public int partitionIt(int left, int right, long pivot) {

        int leftPtr = left - 1;
        int rightPtr = right;
        while (true) {
            while (leftPtr < right && theArray[++leftPtr] < pivot);
            while (rightPtr > left && theArray[--rightPtr] > pivot
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值