快速排序 java

本文详细介绍了如何使用Java编程语言实现冒泡排序算法的递归版本,通过示例代码展示了从数组中按升序排列的过程以及关键的递归逻辑。
摘要由CSDN通过智能技术生成
public class Text {
    public static void main(String[] args) throws ParseException {
        int[] arr={6,1,2,7,9,3,4,5,10,8};
        sort(0, arr.length-1,arr );
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }
    private static void sort(int startIndex,int endIndex,int[] arr) {
        int start=startIndex;
        int end=endIndex;
        //递归出口
        if (start>=end){
            return;
        }
        //选第一个值为中间参考值
        int num=arr[startIndex];
        while (start!=end){
            //头指针和尾指针从两极不断向中间靠拢直到相等为止
            //头<中<尾
            while (true){
                //尾指针先动,只要尾指针符合要求则不断往中间走
                //尾指针所指的数应大于中间参考值
                //一旦尾指针所指的数小于中间参考值,则切换为头指针
                if (end<=start||arr[end]<num){
                    break;
                }
                end--;
            }
            while (true){
                //头指针后动,只要头指针符合要求则不断往中间走
                //头指针所指的数应小于中间参考值
                //一旦头指针所指的数大于中间参考值,则开始交换
                if (end<=start||arr[start]>num){
                    break;
                }
                start++;
            }
            int temp=arr[end];
            arr[end]=arr[start];
            arr[start]=temp;
        }
        //将中间参考值交换到中间
        int temp=arr[startIndex];
        arr[startIndex]=arr[start];
        arr[start]=temp;
        //以中间值为界,可看成左右两个数组
        //在左数组调用方法
        sort(startIndex,start-1,arr);
        //在右数组调用方法
        sort(start+1,endIndex,arr);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值