题解 | 排序

排序

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

import java.util.*;


public class Solution {
    public int[] MySort (int[] arr) {
        // write code here
        return quickSort(arr, 0, arr.length-1);
    }
    public int[] quickSort(int[] arr, int left, int right){
        if(left < right){
            int point = partition(arr, left, right);
            quickSort(arr,left,point-1);
            quickSort(arr,point+1,right);
        }
        return arr;
    }

    // 快速排序,选择一个元素作为基准元素,对待排序元素进行分区,比基准大的放在右边,比基准小的放在左边
    public int partition(int[] arr, int left, int right){
        int base = arr[left];
        while(left < right){
            while(left < right && arr[right] >= base){
                right--;
            }
            swap(arr, left, right);
            while(left < right && arr[left] <= base){
                left++;
            }
            swap(arr, left, right);
        }
        return left;
    }

    public void swap(int[] arr, int left, int right){
        int temp = arr[left];
        arr[left] = arr[right];
        arr[right] = temp;
    }
}

全部评论

相关推荐

10-16 19:16
Java
点赞 评论 收藏
分享
用微笑面对困难:这里面最强的是驾驶证了,可以入职美团大厂,然后直接开启黄马褂人生
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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