时间复杂度:O(n²)
空间复杂度:O(1)
稳定性:不稳定
核心思想:
遍历保存最小值的下标,放在对应的位置上,与对应位置上的数交换位置
实现:
//选择排序
void selectSort(vector<int>& arr) {
int nMin;//保存最小值的下标
for (int i = 0; i < arr.size(); i++) {
nMin =i;//先设置最小值的坐标为i
//从i+1开始遍历比较更新最小值的坐标
for (int j = i + 1; j < arr.size(); j++) {
//如果当前元素比目前最小值还要小就更新最小值的下标
if (arr[j] < arr[nMin]) {
nMin = j;
}
}
//如果最小值不是i就将最小值坐标的元素和i位置的元素进行交换
if (nMin != i) {
arr[nMin] ^= arr[i];
arr[i] ^= arr[nMin];
arr[nMin] ^= arr[i];
}
}
}