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); }
相关文章推荐
- 设计模式----------------简单工厂模式
- Effective C++ 条款1
- c++函数必须先声明在使用
- c++命名空间使用
- Ubuntu下 vi编写第一个C语言程序
- 别被技术绑架
- 别被技术绑架
- C++ char*,const char*,string的相互转换
- cuda之一步一步爬
- 关于C++程序设计的基础核心之二:继承与派生的基本知识
- C语言文本处理
- 再开一篇关于C++程序设计基核心之一:引用,指针,符号优先级,函数参数传递
- C++返回值优化
- C++中的资源管理<转载>
- 【学习笔记】【C语言】类型说明符
- 用MFC写一个随机抽号的软件(VS2013)
- C++ explicit<转>
- 开始学习C++心得实例(5)
- C++double转化为string
- c及c++中的取模运算