从10亿个浮点数中找出最大的1万个.docVIP

  • 4
  • 0
  • 约9.12千字
  • 约 8页
  • 2017-02-28 发布于湖北
  • 举报
从10亿个浮点数中找出最大的1万个 这是一道似易实难的题目,一般同学最容易中的陷阱就是没有重视这个“亿”字。因为有10亿个单精度浮点数元素的数组在32位平台上已经达到3.7GB之巨,在常见计算机平台(如Win32)上声明一个这样的数组将导致堆栈溢出。正确的解决方法是分治法,比如每次处理100万个数,然后再综合起来。不过这不是本文要讨论的主旨,所以本文把上题的10亿改为1亿,把浮点数改为整数,这样可以直接地完成这个问题,有利于清晰地讨论相关算法的优化(注2)。 不假思索 ???????拿到这道题,马上就会想到的方法是建立一个数组把1亿个数装起来,然后用for循环遍历这个数组,找出最大的1万个数来。原因很简单,因为如果要找出最大的那个数,就是这样解决的;而找最大的1万个数,只是重复1万遍而已。 templateclass T void solution_1(T BigArr[], T ResArr[]) { for (int i = 0; i RES_ARR_SIZE; ++i) { int idx = i; for (int j = i + 1; j BIG_ARR_SIZE; ++j) { if (BigArr[j] BigArr[idx]) idx = j; } ResArr[i] = BigArr[idx];

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档