思维导图
C++代码实现
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
int n, smallest = 10000, b[100], ans = 0, a[100]; //设定数组规模,输入的数字个数,以及数据上限(上限和规模可以随意改动 )。
cin >> n;
for (int t = 0; t < n; t++) cin >> a[t]; //往数组中输入数字。
for (int x = 0; x < n; x++) { //在a数组中循环向b数组中输入数字。
smallest = 10000; //重置上限。
for (int j = 0; j < n; j++){
if (a[j] < smallest) smallest = a[j]; //找出此时a数组的最小值。
}
ans = 0;
b[x] = smallest; //添加进b数组。
for (int j = 0; j < n; j++){
if (a[j] != smallest){
a[ans] = a[j]; //将a数组中非最小值的重新赋值进a数组,从而排除最小值。
ans++;
}
else if (j == n - 1) a[j] = 10000; //当数组中末尾值最小时按照前面的代码会遗漏导致多个重复数据,因此特判,将其设为数据上限以排除。
}
}
for (int i = 0; i < n; i++) cout << b[i] << ' '; //循环输出。
return 0;
}