要点:选择排序,从未排序的序列中选择最小的,放到已排好序的最后,时间复杂度
#include <bits/stdc++.h>
using namespace std;
//选择排序,从未排序的序列中选择最小的,放到已排好序的最后
void select_sort(int a[],int n){
int k;
int temp;
for(int i=0;i<n;i++){ //进行n趟排序,
k=i;
for(int j=i;j<n;j++){ //从[i,n]中选择最小的元素,下标为k
if(a[k]>a[j]){
k=j;
}
}
temp = a[i];
a[i] = a[k];
a[k] = temp; //将a[k]放到排好序的序列最后
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
int a[n];
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
select_sort(a,n);
for(int i=0;i<n;i++){
printf("%d ",a[i]);
}
}
return 0;
}