题解 | #排序#

排序

https://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896

import java.util.*;
public class Solution{
    public int[] MySort(int[] arr) {
        qsort(arr,0,arr.length-1);
        return arr;
    }
    
    public void qsort(int []a,int l,int r){
        String step = (l+1) + " " + (r+1);
        int flag = a[l];
        int left = l;
        int right = r;
        int temp =0;
        for(int i = l;i<r+1;i++){
            if (a[i]<flag){//小于移到左边。如果相等,a[i]不动,会被替换
                temp = a[left];
                a[left]=a[i];
                a[i]=temp;
                left++;
                i--;//替换后a坐标不变,将替换后的a[i]值再次比较。for循环退出后,i最终可能小于r+1,但left和right一定相等。
            }else if(a[i]>flag){//大于移到右边
                temp = a[right];
                a[right] =a[i];
                a[i]=temp;
                right--;
                i--;
            }
            if(right==left){
                a[left]=flag;
                break;
            }
        }
        if(left>l){
            qsort(a,l,left-1);
        }
        if(right<r){
            qsort(a,right+1,r);
        }
    }
}

全部评论

相关推荐

09-23 14:45
贵州大学 财务
勇敢求职牛牛:怎么9.2佬人手一个中信证券实习
点赞 评论 收藏
分享
野猪不是猪🐗:还是太卑微了,什么叫放弃本次面试应该说经过评估,贵公司与自己不匹配,决定不再推进后续流程
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务