1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。
碎片内容
从10亿个浮点数中找出最大的1万个这是一道似易实难的题目,一般同学最容易中的陷阱就是没有重视这个“亿”字
因为有10亿个单精度浮点数元素的数组在32位平台上已经达到3
7GB之巨,在常见计算机平台(如Win32)上声明一个这样的数组将导致堆栈溢出
正确的解决方法是分治法,比如每次处理100万个数,然后再综合起来
不过这不是本文要讨论的主旨,所以本文把上题的10亿改为1亿,把浮点数改为整数,这样可以直接地完成这个问题,有利于清晰地讨论相关算法的优化(注2)
不假思索拿到这道题,马上就会想到的方法是建立一个数组把1亿个数装起来,然后用for循环遍历这个数组,找出最大的1万个数来
原因很简单,因为如果要找出最大的那个数,就是这样解决的;而找最大的1万个数,只是重复1万遍而已
templatevoidsolution_1(TBigArr[],TResArr[]){for(inti=0;i
热爱教育事业,爱好互联网行业