• leetcode 912. 排序数组


    912. 排序数组

    难度中等

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

    示例 1:

    输入:nums = [5,2,3,1]
    输出:[1,2,3,5]
    

    示例 2:

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

    提示:

    1. 1 <= nums.length <= 50000
    2. -50000 <= nums[i] <= 50000

    方法: 随机主元的快排

    class Solution {
    public:
        void quicksort(vector<int>& nums, int l, int r){
            if(l>=r) return;
            int t = rand() % (r - l + 1) + l; // 随机选一个作为我们的主元
            swap(nums[l], nums[t]);
    
            int pivot = nums[l], i = l, j = r;
            while(i<j){
                while(i<j && nums[j] >= pivot){j--;}
                while(i<j && nums[i] <= pivot){i++;}
                swap(nums[i], nums[j]);
            }
            swap(nums[l], nums[i]);
            quicksort(nums, l, i-1);
            quicksort(nums, i+1, r);
            return;
        }
        vector<int> sortArray(vector<int>& nums) {
            int n = nums.size();
            quicksort(nums, 0, n-1);
            return nums;
        }
    };
  • 相关阅读:
    二分法排序
    GDB调试命令
    X264编译
    ffmpeg编译
    css-icons
    Javascript组成--ECMAScript,DOM,BOM
    9 Utils
    8 移动端填坑
    7 媒体查询( Media Queries )
    css3--rem
  • 原文地址:https://www.cnblogs.com/AbsolutelyPerfect/p/14920605.html
Copyright © 2020-2023  润新知