给你一个整数数组 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 <= nums.length <= 50000
-50000 <= nums[i] <= 50000
解题思路:
这是一个数组排序题,从提示中可以知道,这个数组最多有50000个元素整数,整数范围在-50000至50000,直接使用封装的sort函数是被允许的使用时间复杂度在O(n^2)级别的算法时间开销大会被提示超时,堆排序、快速排序等是好的选择,或者可以用空间换时间的方法也可以通过。
思路一:空间换时间
C/C++题解:(点击蓝字即可阅读源码,或前往公众号回复“912”获取)
class Solution {
public:
vector<int> sortArray(vector<int>& nums) {
Debug结果:
Java题解:(点击蓝字即可阅读源码,或前往公众号回复“912”获取)
class Solution {
public int[] sortArray(int[] nums) {
Debug结果:
Python题解:(点击蓝字即可阅读源码,或前往公众号回复“912”获取)
class Solution(object):
def sortArray(self, nums):
""":type nums: List[int] :rtype: List[int]"""
Debug结果:
例题来自力扣网https://leetcode-cn.com/
思路二:堆排序(点击蓝字即可阅读源码,或前往公众号回复“912”获取)
堆排序时间复杂度在O(nlgn),对于数据量较大时,还是比较快的。堆排序相关概念算法可以在排序算法中的堆排序(三)、排序算法中的堆排序(二)、排序算法中的堆排序(一)
更多题解前往公众号免费获取