算法学习——快速排序(JAVA实现)

学习借鉴 https://blog.csdn.net/u014241071/article/details/81565148

public class QuickSort {
    public static void swap(int data[],int i,int j){
        //交换两个数组的位子
        int temp = data[i];
        data[i] = data[j];
        data[j] = temp;
    }

    public static void subSort(int[] data,int start,int end){
        if (start<end){
            //基准数
            int base = data[start];
            //左哨兵索引
            int left = start;
            //右哨兵索引
            int right = end+1;
            while (true){
                //左哨兵查找小于基准数的数组下标
                while (left<end && data[++left] - base   <= 0);
                //右哨兵查找大于基准数的数组下标
                while (right>start &&   data[--right] - base >= 0);
                if (left<right){
                    //满足条件交换
                    swap(data,left,right);
                }else{
                    break;
                }
            }
            //两个哨兵碰到一起后,交换基准数 和 右哨兵 的位子
            swap(data,start,right);

            //递归 基于右哨兵左半数组
            subSort(data,start,right-1);
            //递归 基于右哨兵右半数组
            subSort(data,right+1,end);
        }
    }

    public static void quickSort(int[] data){
        //传入需要排序的数组对象,数组的开始下标,结束下标
        subSort(data,0,data.length-1);
    }

    public static void main(String[] args) {
        int[] data = {9,-11,31,24,-31,-48,25,21,30,11,12,89};
        System.out.println("排序之前:\n"+Arrays.toString(data));
        quickSort(data);
        System.out.println("排序之后:\n"+Arrays.toString(data));
    }
}
控制台输出:
排序之前:
[9, -11, 31, 24, -31, -48, 25, 21, 30, 11, 12, 89]
排序之后:
[-48, -31, -11, 9, 11, 12, 21, 24, 25, 30, 31, 89]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值