【java】大数据超内存计算--10000的阶层的计算
ps:今天时间不多,简单介绍下思路,具体实现代码我过两天贴上来。题目:计算10000的阶层。(很多考研或者面试题目会出到这个知识点,比如2014年吉林大学复试第3题)知识归类:应该属于c语言数组一章的内容。
第一种实现方法,底层编程解决,想了解的可以看论坛里面的帖子,群主之前发过一篇,在此我不多讲解了。
第二种,最简单的方法,任何语言都可以实现。如果计算10000的阶层,不用多说,2000的阶层就达到5700多位,你选择的任何数据类型都存储不了,都在数据类型的容量之外,导致越界。那么现在的问题是选择一个合适的存储结构来将数据存起来。一个有n位的数字想存储的话,利用已知java的数据类型,自然而然想到数组。假设算出来的位数有5000位左右,设置5000长度数组,数组每一位存储数字的一位,依次从0开始,每乘以一个数,将数组每一位与被乘数相乘,设置一个变量专门计算进位,然后将进位与对应位相加。照这个思路推算,你要计算10000的阶层不过是一个预估结果有多少位,然后声明多少位数组即可。即使数组达不到要求,多声明几个数组也行。
大体思路很简单,有兴趣的同学可以自己实现以下。第一篇帖子就写到这里,有点水,大家别笑就好。
后续贴可能会讲到:自然语言处理的各种算法(带实现)、大数据处理各种问题(带解决)、云平台搭建与集群处理、少量黑客技术....哎。。思路好杂。以后再说吧。。。
额,用java实现的话直接用java.math.BigInteger就可以了,如果想自己实现的话最好还是参考一下那个src里的BigInteger的源码,大数的运算有很多不同实现和优化,各自的效率和计算精度不同,效率也不同,可以从google上找找,他们的实现都是有优化的拿来参考一下对自己提高很有好处。
页:
[1]