网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

一百万个数求前一百个-创新互联

在内存有限的情况下,求出一百万个数的前一百个。

创新互联专注于网站设计制作、成都网站建设、网页设计、网站制作、网站开发。公司秉持“客户至上,用心服务”的宗旨,从客户的利益和观点出发,让客户在网络营销中找到自己的驻足之地。尊重和关怀每一位客户,用严谨的态度对待客户,用专业的服务创造价值,成为客户值得信赖的朋友,为客户解除后顾之忧。

解题思路:首先想到的是将一百万个数分成一百份,一份就是一万个,然后以一万建一个最小堆求出前一百个,一百份又是一万个这样就能求出前一百个;

代码如下:

#include

#include

#include

#include

#include

using namespace std;

const int N=10000;

const int K=100;

void CreateArray(vector&array)

{

srand(time(0));

array.reserve(N);

for (size_t i = 0; i < N; i++)

{

array.push_back(rand() % 10000);

}

for (size_t j = N-K; j < N; j++)

{

array[j] = rand()%N;

}

}

void AdjustDown(int* a, size_t size, int root)

{

int child = root * 2 + 1;

while (child < size)

{

if (child + 1

{

++child;

}

if (a[child] < a[root])

{

swap(a[child], a[root]);

root = child;

child = 2 * root + 1;

}

else

{

break;

}

}

}

void Gettop(vector&array)

{

int a[K] = {};

for (size_t i = 0; i < K; i++)

{

a[i] = array[i];

}

for (int i = (K - 2) / 2; i >= 0; i--)

{

AdjustDown(a, K, i);

}

for (int j = K; j < N; j++)

{

if (a[0]

{

a[0] = array[j];

AdjustDown(a, K, 0);

}

}

for (size_t i = 0; i < K; i++)

{

cout << a[i] << " ";

}

cout << endl;

}

void Test()

{

vectorarray;

CreateArray(array);

Gettop(array);

}

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻标题:一百万个数求前一百个-创新互联
本文地址:http://bjjierui.cn/article/ihspj.html

其他资讯