一个数组的问题,求出一个数组最大的几个数组成的数组
从1亿个数中,找出最大的1000个数。效率要尽可能的高,使用的额外空间要尽可能小(不能使用任何库函数)。voidmax_num(int*sourse,int*max_nu...
从1亿个数中,找出最大的1000个数。效率要尽可能的高,使用的额外空间要尽可能小(不能使用任何库函数)。
void max_num(int* sourse,int* max_num)
source_num:数组中包括所有的1亿个数。
max_num:保存最大的1000个数。 展开
void max_num(int* sourse,int* max_num)
source_num:数组中包括所有的1亿个数。
max_num:保存最大的1000个数。 展开
1个回答
展开全部
大体可以这样写:
首先把前一千个存入max_num数组;然后对max数组进行按大小合并排序,然后将source中后面的数与max中最小的数比较,如果source中取出的数大于max中最小的数,替换,然后对max数组进行2分排序,循环进行。
如:
将前一千个数存入max数组,合并排序后max【0】中存储最小的数,将source【1001】与max【0】比较,小于继续遍历source数组,大于就将source【1001】赋给max【0】,将max进行2分排序,继续比较后面的source数组。
我的思路是这样,我也是菜鸟,抛砖引玉一下!!
首先把前一千个存入max_num数组;然后对max数组进行按大小合并排序,然后将source中后面的数与max中最小的数比较,如果source中取出的数大于max中最小的数,替换,然后对max数组进行2分排序,循环进行。
如:
将前一千个数存入max数组,合并排序后max【0】中存储最小的数,将source【1001】与max【0】比较,小于继续遍历source数组,大于就将source【1001】赋给max【0】,将max进行2分排序,继续比较后面的source数组。
我的思路是这样,我也是菜鸟,抛砖引玉一下!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询