算法描述
1 . 枚举序列中第2~n个元素。
2 . 当枚举元素i时,前i-1个元素已经有序。将第i个元素插入到前i-1个元素的有序序列中,形成长度为i的有序序列。
3 . 枚举过程结束后,整个序列有序。
稳定排序
代码
#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;
}
参考:
青舟智学