查找最小的k个元素(数组)
题目:输入n个整数,输出其中最小的k个。
例如输入1,2,3,4,5,6,7,8这8个数字,则最小的4个数字为1,2,3,4.
这个题目最容易想到的是排序算法。在这里我使用的是选择排序,因为不需要将所有元素进行排序,只需要找到k个最小值,所以使用选择排序,循环k次即可。
代码:
#include <iostream>
using namespace std;
void SelectSort(int array[],int k,int n)
{
for (int i=0 ; i<k ; ++i)
{
int min=i;
for (int j=i+1 ; j<n ; ++j)
{
if (array[j]<array[min])
{
min = j;
}
}
int temp = array[min];
array[min] = array[i];
array[i] = temp;
}
}
void main()
{
int array[]={8,9,1,5,4,7,3,2,6};
SelectSort(array,4,9);
for (int i=0 ; i<4 ; ++i)
{
cout<<array[i]<<endl;
}
system("pause");
}