频道栏目
首页 > 程序开发 > 综合编程 > 其他综合 > 正文
大数(一亿个数)中求前一百个最大的数输出问题
2014-01-07 11:09:24         来源:hhxin635612026的专栏  
收藏   我要投稿
#include 
using namespace std;
#include
/*
一亿个数里面求前一百个最大的数输出问题
算法思想:
1、将前一百个数建成小根堆
2、后面数字依此与肯比较大小
	(1)如果比根大进行下一个
	(2)如果比根小,将其与根替换并调整堆重新为小根堆
*/
void BuildMinHeap(int A[],int len);
void AdjustDown(int A[],int k,int len);
int main()
{
	//因为A为堆所以A[0]不用
	int A[101];int count=100;

	while(count--)//前一百个数默认为最大数
	{
		A[count+1]= rand()%1000+1;
		cout<0;i--)
	{
		AdjustDown(A,i,len);
	}
}
void AdjustDown(int A[],int k,int len)
{
	//将第K个元素向下调整
	A[0] = A[k];//暂存需要调整的元素
	for(int i = 2*k;i<= len ; i*=2)
	{
		if(iA[i+1]) //取其较小的子孙节点
			i++;
		if(A[0]<=A[i]) break;     //如果该节点比子孙节点要小,则不需替换 
		else{//否则
			A[k]= A[i];                 //将A[i]调整到双亲节点上
			k=i;							//k位置为替换的元素,下次循环考虑是否要向下调整
		}
	}
	A[k] = A[0];						//被筛选节点放入最终位置
}


------------------------VS2010 格式调整 Ctrl k ,Ctrl f------------------------

点击复制链接 与好友分享!回本站首页
相关TAG标签 大数 个数 问题
上一篇:霍纳法则和二进制幂
下一篇:递归中的递归
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站