912-排序数组

2020-03-31  本文已影响0人  饮酒醉回忆

排序数组

题目

给定一个整数数组 nums,将该数组升序排列。

示例 1:

输入:[5,2,3,1]
输出:[1,2,3,5]
示例 2:

输入:[5,1,1,2,0,0]
输出:[0,0,1,1,2,5]
 

提示:

1 <= A.length <= 10000
-50000 <= A[i] <= 50000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sort-an-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

排序方法比较多,这里我就不一一列举了.我最熟悉的算法就是快速排序了.快速排序的思路就是最开始选定一个基准,然后将这个基准进行定位,使基准左边的数字都比他小.之后不停的换基准就可以了.

代码

class Solution {
    public int[] sortArray(int[] nums) {
        //今天的就是各种排序
        //最熟悉的快速排序
        fastSort(0,nums.length-1,nums);
        return nums;   
    }

    private void fastSort(int left,int right,int[] nums){
        if(left >= right){
            return;
        }
        int index = nums[left];
        int i = left;
        int j = right;
        while(i < j){
            while(i < j && index < nums[j]){
                j--;
            }
            nums[i] = nums[j];
            while(i < j && index >= nums[i]){
                i++;
            }
            nums[j] = nums[i];
        }
        nums[i] = index;
        fastSort(left,i-1,nums);
        fastSort(i+1,right,nums);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读