-
基本思想:
在长度为N的无序数组中,第一次遍历n-1个数,找到最小的数值与第一个元素交换;
第二次遍历n-2个数,找到最小的数值与第二个元素交换;
。。。
第n-1次遍历,找到最小的数值与第n-1个元素交换,排序完成。 -
平均时间复杂度:O(n^2)
#include <bits/stdc++.h>
using namespace std;
int s = 0x3f3f3f3f;
int main(){
int n;
scanf("%d",&n);
int a[n];
for(int i = 0 ; i < n ; i++){
scanf("%d",&a[i]);
}
int min1,k;
for(int i = 0 ; i < n-1 ; i++){
min1 = s;
for(int j = i ; j < n ; j++){
if(a[j] < min1){
k = j;
min1 = a[j];
}
}
min1 = a[k];
a[k] = a[i];
a[i] = min1;
}
for(int i = n-1 ; i >= 0 ; i--){//逆序输出
printf("%d ",a[i]);
}
}