快速排序算法

解法一:以最左端的值为标准值

package com.atguigu.sort;

import java.util.Arrays;

/**
 * @author cao ziqiang
 * @create 2022-10-03 12:47
 */
public class quick {
    public static void main(String[] args) {
        int[] arr = new int[]{4,1,7,2,44,7};
//        int[] arr = new int[]{0,1,2,2,6,6,7,8,9};
        quicksort(arr,0,arr.length-1);
        System.out.println(Arrays.toString(arr));

    }
    public static void quicksort(int[] arr,int start,int end){
       // 结束递归的条件
        if(start < end){
            //最左边的元素为标准值
            int stand = arr[start];
            //定义start为左索引
            int low = start;
            //定义end为有索引
            //防止改变start 和end的值,后续还要利用start和end递归
            int high = end;

            //只有在左索引<右索引的情况下才判断
            while(low < high){
                //先判断右边,如果右边的值>=标准值,有索引-1,否则调到左边
                //注意不是和左边互换位置
                while(low < high && arr[high]>= stand){
                    high--;
                }
                arr[low] = arr[high];
                //然后判断左边,如果左边的值<=标准值,左边的索引+1继续判断
                //如果左边的值>标准值,则将其调到右边
                while(low < high && arr[low] <= stand){
                    low++;
                }
                arr[high] = arr[low];
            }
            //到目前为止,有了左右两部分,左边的都<=标准值,右边的都>=标准值
            //然后将标准值放在其应在的位置,
            arr[low] = stand;
            //然后将其左边再分为两部分
            quicksort(arr,start,low-1);
            //然后将其右边在分为两部分
            quicksort(arr,low+1,end);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值