您的位置:首页 > 编程语言 > C语言/C++

c++求数组中的最小(大)的n位数

2015-06-19 08:31 495 查看
#include <iostream>
using namespace std;

class MaxHash
{
public:
MaxHash(int n)
{
data = new int
;
size = n;
}
void Insert(int a[], int n)
{
int i = 0;
for (; i < size; i++)//初始化数组
{
data[i] = a[i];
}
int j = size / 2;
while (j >= 0)//构造堆
{
InitHash(data,j);
j--;
}
while (i < n)//找出最小的size个数字
{
if (a[i] < data[0])
{
data[0] = a[i];
InitHash(data,0);
}
i++;
}
for (i = 0; i < size; i++)//打印找到的这size个数字
{
cout << data[i] << " ";
}
cout << endl;
}
void InitHash(int a[], int n)
{
int i = n;
int j = 2 * i + 1;
while (j< size)
{
int tmp = a[i];
if (j+1<size &&a[j] < a[j + 1])
j = j + 1;
if (a[i] < a[j])
{
a[i] = a[j];
a[j] = tmp;
}
i = j;
j = 2 * i + 1;
}
}
private:
int *data;
int size;
};
int main()
{
MaxHash mh(4);
int a[] = { 0,100, 88, 77, 66, 55, 44, 33, 22, 22, 11, 5, 4, 3, 2, 1, 1 };
mh.Insert(a, 17);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: