java2亿个随机生成的无序整数,如何找到其中位数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java2亿个随机生成的无序整数,如何找到其中位数相关的知识,希望对你有一定的参考价值。
java2亿个随机生成的无序整数,如何找到其中位数java2亿个随机生成的无序整数,如何找到其中位数
有一亿个数字其中有两个是重复的 快速找到他,时间和空间最优
public static void main(String [] srgs)
int i=(int)(Math.random()*900)+100;
//int i= new java.util.Random().nextInt(900)+100;也可以
System.out.println(i);
也就是要求100到999之间的随机数,
Math.random()返回的是0到1之间的随机数,返回类型为double型,大于等于0,小于1,
引用JDK1.6api
public static double random()返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。
Math.random()*900,就是0到900之间的数了,可以取到0,但是取不到900,但是这个乘积是double类型的,将它强制转换成int类型,然后加上100,就变成了可以取到100,但是取不到1000.完毕追问
那怎么找到中间的啊
参考技术A 如果内存够的话,可以先排序再找中位数。如果内存容纳不下2亿个数,则不可以用排序算法。可以采用桶排序。 参考技术B 因为这2亿个数都是无序整数,所以要先用数组排序,再取中间两个数的平均值。
以上是关于java2亿个随机生成的无序整数,如何找到其中位数的主要内容,如果未能解决你的问题,请参考以下文章
挑战程序员同学,如何只用2GB内存从20/40/80亿个整数中找到出现次数最多的数?