您的位置:首页 > 职场人生

微软面试100道之 5 查找最小的k个元素(数组)

2013-09-02 20:27 369 查看
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]<<" ";

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐