5.查找最小的k个元素
题目:输入n个整数,输出其中最小的k个。
例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。
#include<iostream>
#include<vector>
using namespace std;
void printarray(const vector<int> Array,int min)
{
for(int i=0;i<min;i++)
cout<<Array[i]<<"\t";
cout<<endl;
}
//解法:
//用冒泡法直接求解K次即可。
void findmin(vector<int> oldarray,int K)
{
int min=K>oldarray.size() ?oldarray.size():K;
for(int i=0;i<min;i++)
{
for(int j=oldarray.size()-1;j>i;j--)
{
if(oldarray[j]<oldarray[j-1])
{
swap<int>(oldarray[j],oldarray[j-1]);
}
}
}
printarray(oldarray,min);
}
int main()
{
vector<int> oldarray;
int input;
cout<<"please input the array's data:"<<endl;
cin>>input;
while(input!=0)
{
oldarray.push_back(input);
cin>>input;
}
cout<<"the array that you input is:"<<endl;
printarray(oldarray,oldarray.size());
cout<<"please input what min number you want to get?"<<endl;
cin>>input;
findmin(oldarray,input);
system("pause");
return EXIT_SUCCESS;
}
上述代码纯个人创作!欢迎转载、交流,代码可直接Ctrl+C、Ctrl+V直接运行。