从一道笔试题谈算法优化.docVIP

  • 2
  • 0
  • 约9.78千字
  • 约 7页
  • 2016-05-11 发布于重庆
  • 举报
从一道笔试题谈算法优化

从一道笔试题谈算法优化 引子 每年十一月各大IT公司都不约而同、争后恐后地到各大高校进行全国巡回招聘。与此同时,网上也开始出现大量笔试面试题;网上流传的题目往往都很精巧,既能让考查基础知识,又在平淡中隐含了广阔的天地供优秀学生驰骋。 这两天在网上淘到一道笔试题目(注1),虽然真假未知,但的确是道好题,题目如下: 从10亿个浮点数中找出最大的1万个。 这是一道似易实难的题目,一般同学最容易中的陷阱就是没有重视这个“亿”字。因为有10亿个单精度浮点数元素的数组在32位平台上已经达到3.7GB之巨,在常见计算机平台(如Win32)上声明一个这样的数组将导致堆栈溢出。正确的解决方法是分治法,比如每次处理100万个数,然后再综合起来。不过这不是本文要讨论的主旨,所以本文把上题的10亿改为1亿,把浮点数改为整数,这样可以直接地完成这个问题,有利于清晰地讨论相关算法的优化(注2)。 不假思索拿到这道题,马上就会想到的方法是建立一个数组把1亿个数装起来,然后用for循环遍历这个数组,找出最大的1万个数来。原因很简单,因为如果要找出最大的那个数,就是这样解决的;而找最大的1万个数,只是重复1万遍而已。 template class T void solution_1( T BigArr[], T ResArr[] ) { for( int i = 0; i

文档评论(0)

1亿VIP精品文档

相关文档