快速排序java实现

基于java实现快速排序

import java.util.Arrays;

/**
 * @desc 快速排序
 * https://blog.youkuaiyun.com/zcxyywd/article/details/131024516
 **/
public class QuickSort {

    public static void quickSort(int arr[], int startIndex, int endIndex) {

        //递归结束条件
        if (startIndex >= endIndex) return;

        //得到基准元素位置
        int pIndex = partition(arr, startIndex, endIndex);

        //基准元素,左右两部分进行递归
        quickSort(arr, startIndex, pIndex - 1);
        quickSort(arr, pIndex + 1, endIndex);
    }

    /**
     * 双边循环法
     * @param arr
     * @param startIndex
     * @param endIndex
     * @return
     */
    public static int partition(int arr[], int startIndex, int endIndex) {
        int p = arr[startIndex];
        int l = startIndex;
        int r = endIndex;

        while (l != r) {

            //右指针向左移动,找到小于基准元素的那个数就停止
            while (l<r && arr[r] > p) {
                r--;
            }

            //左指针向右移动,找到大于基准元素的那个数就停止
            while (l<r && arr[l] <= p) {
                l++;
            }

            /**
             * 交换l指针和r指针所指的元素
             */
            if (l<r) {
                int tmp = arr[l];
                arr[l] = arr[r];
                arr[r] = tmp;
            }
        }

        //交换基准元素和重合点的元素
        arr[startIndex] = arr[l];
        arr[l] = p;
        return l;
    }

    public static void main(String[] args) {
        int arr[] = {4,7,6,5,3,2,8,1};
        quickSort(arr, 0, 7);
        System.out.println(Arrays.toString(arr));
    }
}

参考链接 

【Java】快速排序_java快速排序-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值