题解 | #输入n个整数,输出其中最小的k个#
输入n个整数,输出其中最小的k个
http://www.nowcoder.com/practice/69ef2267aafd4d52b250a272fd27052c
不使用系统排序算法的操作:
#include <list>
#include <math.h>
using namespace std;
int main()
{
int n, k;
while (cin >> n >> k) {
int m = 0;
list<int> mm;
while (n-->0) {
int v;
cin >> v;
if (mm.empty()) {
mm.push_back(v);
}
else {
bool done = false;
int pre = 0;
for (auto it = mm.begin(); it != mm.end(); ++it) {
if (v > pre && v <= *it) {
mm.insert(it, v);
done = true;
}
pre = *it;
}
if (mm.size() < k && !done)
mm.push_back(v);
if (mm.size() > k)
mm.pop_back();
}
}
for (auto it : mm)
cout << it << ' ';
cout << endl;
}
return 0;
}
