#include <iostream>
#include <ctime>
#include <functional>
#include "algo.h"
#include <fstream>
#include <algorithm>
using namespace std;
const unsigned int TEST_TIME = 1;
int main()
{
int* BigArr = new int[ BIG_ARR_SIZE ];
srand( time( NULL ) );
clock_t begin_time, end_time;
double sum;
unsigned int i;
//调用STL自带 pop_heap 和push_heap函数
for( i = 0; i < TEST_TIME; ++i )
{
fill_arr( BigArr, BIG_ARR_SIZE );
begin_time= clock( );
//建最小堆
make_heap(BigArr,BigArr+RES_ARR_SIZE,greater_equal<int>());
for(int j=RES_ARR_SIZE;j<BIG_ARR_SIZE;j++)
{
//大于最小堆根节点,岀堆,交换值,再入堆
if(BigArr[0]<BigArr[j])
{
pop_heap(BigArr,BigArr+RES_ARR_SIZE,greater_equal<int>());
swap(BigArr[RES_ARR_SIZE-1],BigArr[j]);
push_heap(BigArr,BigArr+RES_ARR_SIZE,greater_equal<int>());
}
}
end_time=clock( );
sum= end_time - begin_time;
}
std::cout << "solution_1 used time: "<< sum << std::endl;
//模板adjust_heap函数
for( i = 0; i < TEST_TIME; ++i )
{
fill_arr( BigArr, BIG_ARR_SIZE );
begin_time= clock( );
//建最小堆
make_heap(BigArr,BigArr+RES_ARR_SIZE,greater_equal<int>());
for(int j=RES_ARR_SIZE;j<BIG_ARR_SIZE;j++)
{
//调整顶端元素
if(BigArr[0]<BigArr[j])
{
adjust_heap(BigArr,0,(int)RES_ARR_SIZE,j,*(BigArr+j),greater<int>() );
}
}
end_time=clock( );
sum= end_time - begin_time;
}
cout << "solution_2 used time: "<< sum << endl;
//完全特例化的adjust_heap函数
for( i = 0; i < TEST_TIME; ++i )
{
fill_arr( BigArr, BIG_ARR_SIZE );
begin_time= clock( );
//建最小堆
make_heap(BigArr,BigArr+RES_ARR_SIZE,greater_equal<int>());
for(int j=RES_ARR_SIZE;j<BIG_ARR_SIZE;j++)
{
//调整顶端元素
if(BigArr[0]<BigArr[j])
{
adjust_heap(BigArr,0,(int)RES_ARR_SIZE,j,*(BigArr+j));
}
}
end_time=clock( );
sum= end_time - begin_time;
}
cout << "solution_3 used time: "<< sum << endl;
delete []BigArr;
return 0;
}
从1亿个整数中找出最大的1万个
需积分: 31 196 浏览量
2010-03-20
23:48:14
上传
评论
收藏 2KB RAR 举报
x642458
- 粉丝: 99
- 资源: 18
最新资源
- 基于SpringBoot+Vue3快速开发平台、自研工作流引擎源码设计.zip
- docker安装部署全流程
- 基于树莓派的人脸识别系统python源码+项目部署说明+超详细代码注释.zip
- Python和R爬取分析赶集网北京二手房数据.zip
- Python和R爬取分析赶集网北京二手房数据.zip
- Java知识体系最强总结(2021版).txt
- Python知识点Python知识点Python知识点Python知识点Python知识点PythonPython知识点.txt
- Java开发基于seetaface6的人脸识别(活体检测)的封装源码.zip
- JSP在线失物招领管理平台源码.zip
- JSP在线旅游美食展现管理系统源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈