5.查找最小的k个元素(数组)
题目:输入n个整数,输出其中最小的k个。
例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。
#include <iostream>
using namespace std;
int main() {
int a[]={10,6,3,9,15,12,7,5,8,9,45,12,3,2,45,78,1};
int k;
cout<<"输入k"<<endl;
cin>>k;
int b[50];
for(int i=0; i<k; i++) {
b[i] = a[i];
}
for(int l=0;l<k;l++) {//只可惜数组不能被引用
for(int j=0; j<k-1; j++) {
if(b[j]<=b[j+1]) {
int t;
t = b[j];
b[j] = b[j+1];
b[j+1] = t;
}
}
}
for(int m=k; m<(sizeof(a)/sizeof(a[0])); m++) {//有一件非常麻烦的事就是如何获得数组中元素的个数
if(a[m]<b[0]) {
b[0] = a[m];
for(int l=0;l<k;l++) {
for(int j=0; j<k-1; j++) {
if(b[j]<=b[j+1]) {
int t;
t = b[j];
b[j] = b[j+1];
b[j+1] = t;
}//可能用二分法排序会比较好
}
}
}
}
for(int y=0; y<k; y++) {
cout<<b[y]<<" ";
}
}