快速排序算法

主要搞清楚他们的原理,先取一个轴设置为temp ,第一步这个数组的最右边开始和轴比较,如果大于这个轴,就(right)right--向后移动一位,如果小于轴这个值就要最左边的交换位置,也就是赋值给最左边  arr[left] =arr[right]   在进行左边扫描,最左边和轴比较,如果小于轴,就(left)left++向前移动一位,如果大于轴这个值就要最右边的交换位置,也就是赋值给最左边

arr[right]=arr[left]   这个方法大概就是这样的  用的时候调用传参就好了

//方法

public static int[] qs(int arr[],int l,int r){
    int left=l;
    int right=r;
    int temp=arr[left];
    while(left<right){
        while(left<right&&arr[right]>temp){
            right--;
        }
        if(left<right){
            arr[left]=arr[right];
        }
        while(left<right&&arr[left]<temp){
            left++;
        }
        if(left<right){
            arr[right]=arr[left];
        }
        if(left>=right){
            arr[left]=temp;
        }
    }
    if(l>left){
        arr=qs(arr,l,right-1);
    }
    if(left+1<r){
        arr=qs(arr,left+1,r);
    }

    return arr;
}

//主函数
public static void main(String[] args) {
    int[] arr=new int[]{2,6,7,9,22,5,11,66,778,6666,144,5};
    int l=0;
    int r=arr.length-1;
    if(l<r) {  //保证左边的值小于最右边才能运行
        arr = qs(arr, l, r);
    }
    for (int i:arr){
        System.out.println(i);
    }


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值