选择排序的交换操作介于 0 ~ (n - 1) 次之间。
选择排序的比较操作为 n (n - 1) / 2 次。
选择排序的赋值操作介于 0 ~ 3 (n - 1) 次之间。
比较次数O(n^2);交换次数O(n)。
#include<iostream>
using namespace std;
int main() {
//每一趟选最小的放到前面来
int a[] = {1,5,3,2,0,2};
int n = 6 , t = 0;
for(int i=0;i<n-1;i++) {
int max_i = i ; //保存最大的索引位置
for(int j=i+1;j<n;j++) { //在i+1到n-1的范围内找比i位置更小的
if(a[j] < a[max_i]) {
max_i = j;
}
}
//如果最大索引记录还是i,没找到更小的话,就不用交换啦
if(max_i != i) {
t = a[i];
a[i] = a[max_i];
a[max_i] = t;
}
}
for(int i=0;i<n;i++) cout<<a[i]<<" ";
return 0;
}