1. 基本思想
每趟找到未排序序列的最小值放在最前面,一共n-1趟
2. 代码案例实现
#include<iostream>
using namespace std;
//交换a,b的值
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
//简单选择排序
void selectSort(int arr[], int n) {
int min_index = 0;
for (int i = 0; i < n - 1; i++) {
min_index = i;
for (int j = i + 1; j < n; j++) { //找最小值的下标
if (arr[j] < arr[min_index]) {
min_index = j;
}
}
if (min_index != i) { //arr[i]不是最小值
swap(arr[min_index], arr[i]); //交换arr[i]和最小值
}
}
}
int main() {
int arr[] = { 5,1,3,2,6,7,4 };
int n = sizeof(arr) / sizeof(arr[0]);
selectSort(arr, n);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
3. 运行结果
4. 时间复杂度
最好情况:O(n^2)
最坏情况:O(n^2)
平均:O(n^2)
5. 空间复杂度
O(1)
6. 稳定性
不稳定