选择排序是一种稳定的排序,时间复杂度为O(n^2),其基本概念是:
每一次从待排序的数据元素中选出最小(或最大)的元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
核心代码如下:
#include <iostream>
using namespace std;
void selectionsort(int* arr, int len) { //基础版
for (int i = 0; i < len; i++) {
//寻找区间[i,n)中的最小值
int minIndex = i;
for (int j = i + 1; j < len; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
swap(arr[i], arr[minIndex]); //将本轮找到的最小值放入i位置中
}
}
int main() {
int arr[] = { 1,4,7,5,9,6,8,3,2 };
int length = sizeof(arr) / sizeof(arr[0]);
selectionsort(arr, length);
for (int i = 0; i < length; i++)
cout << arr[i] << " ";
cout << endl;
return 0;
}