选择排序每次会从未排序区间中找到最小的元素,将其放到已排序区间的末尾。
#include <vector>
#include <stdlib.h>
using namespace std;
class Solution {
public:
vector<int> sortArray(vector<int>& nums) {
// 执行选择排序操作
selectSort(nums);
return nums;
}
//选择排序函数
void selectSort(vector<int>& nums)
{
int n = nums.size();
if(n<=1) return; //特殊处理
//第一层循环,每循环一次,在未排序数组中选择出最小值,放在已排序的末尾
for (int i = 0; i < n; i++)
{
int minValueIndex = i; //记录查找过程中的最小值索引,用于减小交换次数
for (int j = i; j < n; j++)
{
if(nums[minValueIndex]>nums[j])
{
minValueIndex = j; //记录查找过程中的最小值索引
}
}
//交换数据
int temp = nums[i];
nums[i] = nums[minValueIndex];
nums[minValueIndex] = temp;
}
}
};