快排 排序


package com.leetcode;

import org.junit.Test;

import java.util.Arrays;


/**
 * @ClassName: SortAlgorithm
 * @Description:
 * @Author fjp
 * @Date 2021/3/5-9:16
 * @Version 1.0
 */
public class SortAlgorithm {

    static int[] arr = {1, 2, 8, 7, 9, 0, 6, 5, 3, 4};


 


  

    @Test
    public void test1() {//快排

        sortQuick1(arr, 0, arr.length - 1);
        System.out.println(Arrays.toString(arr));

    }

    private void sortQuick1(int[] arr, int L, int R) {

        if (L >= R) return;
        int left = L;
        int right = R;
        int pivot = arr[left];
        while (left < right) {
            while (left < right && arr[right] >= pivot) right--;//大数放右边 ,所以不动,  等于也不用管,最终会被挤过来
            if (left < right) arr[left] = arr[right];			  // 小数放左,一定要判断,因为上一行 right-- 值有变化
            while (left < right && arr[left] <= pivot) left++;
            if (left < right) arr[right] = arr[left];
        }
        arr[left] = pivot;//left 真正排好后的位置
        sortQuick1(arr, L, left - 1);
        sortQuick1(arr, left + 1, R);

    }


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值