选择排序
原理
从头到尾遍历整个数组,每一次找到剩下数组元素中的最小值,把最小值和前面遍历到的元素进行交换
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int a[1000];
for (int i = 0;i < n;i++)
cin >> a[i];
for (int i = 0;i < n-1;i++) { //循环到n-1最后一个不用找最小值
int minn = a[i]; //默认第i个为最小值
int p = i; //记录最小值的位置
for (int j = i+1;j < n;j++) { //由于自己不用和自己比,所以从i+1开始找最小值
if (a[j] < minn) {
minn = a[j];
p = j;
}
}
if(p!=i) //如果这个数已经在它应在的位置上了就不用交换
swap(a[i],a[p]);
}
for (int i = 0;i < n;i++)
cout << a[i] << ' ';
return 0;
}
选择排序是原地排序,也是稳定排序。