java2亿个随机生成的无序整数,如何找到其中位数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java2亿个随机生成的无序整数,如何找到其中位数相关的知识,希望对你有一定的参考价值。

java2亿个随机生成的无序整数,如何找到其中位数java2亿个随机生成的无序整数,如何找到其中位数

有一亿个数字其中有两个是重复的 快速找到他,时间和空间最优

public class Test2


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亿个整数中找到出现次数最多的数?

JAVA怎么计算txt中一个1亿个浮点数的中位数?

请问java生成任意位数的随机数

如何生成1亿个手机号码?Python生成随机数的22种方法,random函数太强了

如何使用 boost 生成不同位的随机多精度整数?