0
点赞
收藏
分享

微信扫一扫

力扣912 排序数组 medium 20220128

code_balance 2022-01-28 阅读 72
给你一个整数数组 nums,请你将该数组升序排列。

冒泡--超时了

快速排序--超时了

 插入排序--1247ms

快排--935ms

public static int[] sortArray(int[] nums) {
        quickSort(nums,0,nums.length-1);
        return nums;
    }

    public static void quickSort(int[] arr,int start,int end){
        if (start>=end) return;
        int p=arr[start];
        int left=start;
        int right=end;
        while(left<=right){
            //从左端开始遍历,直到找到比p大的值
            while (left<=right && arr[left]<p){
                left++;
            }
            //从右端开始遍历,直到找到比p小的值
            while (left<=right && arr[right]>p){
                right--;
            }
            //开始交换
            if (left<=right){
                int temp=arr[left];
                arr[left]=arr[right];
                arr[right]=temp;
                left++;
                right--;
            }
        }
        //左半段继续快排
        quickSort(arr,start,right);
        //右半段继续快排
        quickSort(arr,left,end);
    }
举报

相关推荐

0 条评论