5.查找最小的k个元素
题目:输入n个整数,输出其中最小的k个。
题目:输入n个整数,输出其中最小的k个。
例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
void MaxHeapify(int a[], int i, int n)
{
int left = 2*i+1;
int right = 2*i+2;
int largest = i;
if(a[left] < a[i] && left <= n)
largest = left;
if(a[right] < a[i] && right <= n)
largest = right;
if(largest != i)
{
int temp;
temp = a[i];
a[i] = a[largest];
a[largest] = temp;
MaxHeapify(a, largest, n);
}
}
void print(int B[], int n)
{
for(int i = 0; i < 10; i++)
cout << B[i]<< " ";
cout<< endl;
}
int main(int argc, char *argv[])
{
int a[10] = {32, 98, 33, 88, 75, 1, 34, 56, 100, 3};
int n = 9;
int t;
for(int i = n/2; i >= 0; i--)
MaxHeapify(a, i, n);
while(cin >> t)
{
if(a[0] < t)
{
a[0] = t;
MaxHeapify(a, 0, n);
}
print(a, n);
}
return 0;
}