一、选择排序
//选择
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 110
using namespace std;
int a[N], n, cnt;
int main() {
scanf("%d", &n);
for (int i = 0; i < n; ++i)
scanf("%d", &a[i]);
for (int i = 0; i < n; ++i) {
int min_pos = i;
for (int j = i + 1; j < n; ++j) {
if (a[j] < a[min_pos])
min_pos = j;
}
swap(a[i], a[min_pos]);
}
cnt = 0;
for (int i = 0; i < n; ++i)
if (i == 0 || a[i] != a[i - 1])
a[cnt++] = a[i];
printf("%d\n", cnt);
for (int i = 0; i < cnt; ++i)
printf("%d ", a[i]);
return 0;
}
二、冒泡排序
//冒泡:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 110
using namespace std;
int a[N], n, cnt;
int main() {
scanf("%d", &n);
for (int i = 0; i < n; ++i) scanf("%d", &a[i]);
// TODO 请补全下述代码,使用冒泡排序完成排序
for(int i =0;i<n;i++){
for(int j = 0;j<n-i-1;j++){
if(a[j]>a[j+1])
swap(a[j],a[j+1]);
}
}
cnt = 0;
for (int i = 0; i < n; ++i)
if (i == 0 || a[i] != a[i - 1])
a[cnt++] = a[i];
printf("%d\n", cnt);
for (int i = 0; i < cnt; ++i) printf("%d ", a[i]);
return 0;
}
三、插入排序
//插入:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 110
using namespace std;
int a[N], n, cnt;
int main() {
scanf("%d", &n);
for (int i = 0; i < n; ++i)
scanf("%d", &a[i]);
for (int i = 1; i < n; ++i) {
int j, x = a[i];
for (j = i; j > 0 && a[j - 1] > x; --j) {
a[j] = a[j - 1];
}
a[j] = x;
}
cnt = 0;
for (int i = 0; i < n; ++i)
if (i == 0 || a[i] != a[i - 1])
a[cnt++] = a[i];
printf("%d\n", cnt);
for (int i = 0; i < cnt; ++i) printf("%d ", a[i]);
return 0;
}