给定一个整数数组 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
思 路 分 析 : \color{blue}思路分析: 思路分析:排序问题是算法中最为经典的问题之一,比较常见的大概有八、九种。
选 择 排 序 : \color{green}选择排序: 选择排序:
每次从剩余待排元素中取出最小的元素,整个取数过程就是一个升序序列。时间复杂度O(n2)
class Solution {
public:
vector<int> sortArray(vector<int>& nums) {
int numsSize = nums.size();
//每次从剩余待排元素[i, numsSize - 1]中,找到最小元素放到nums[i]
for (int i = 0; i < numsSize; ++i){
int minValIndex = i;//在[i, numsSize - 1]中,最小元素的下标
for (int j = i + 1; j < numsSize; ++j){
if (nums[j] < nums[minValIndex]){
minValIndex = j;//更新最小元素下标
}
}
swap(nums[i], nums[minValIndex]);//将当前最小元素放入nums[i]
}
return nums;
}
}