基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。
#include <iostream>
using namespace std;
void SelectionSort(int arr[],int length) {
for (int i = 0; i < length; i++) {
int min = i;
for (int j = i + 1; j < length; j++) {
if (arr[j] < arr[min]) {
min = j;
}
}
if (i != min) {
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
}
int main() {
int arr[] = { 9,5,8,1,3,6,4,7,0,2};
int length = sizeof(arr) / sizeof(arr[0]);
SelectionSort(arr, length);
for (int i = 0; i < length; i++) {
cout << arr[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
选择排序总结:
- 时间复杂度:O(N^2)
- 空间复杂度:O(1)
- 稳定性:不稳定