如何高效的将一个数组进行 值范围的划分?
比如: 有个 数组长度 10000,a[] 并且是10000个随机正数。
现在有另外四个数组或容器分别 b,c,d,e ;
b 存放5-100的值
c 存放 500-3000的值
d 存放 4000-6000的值
e 存放 其他(不上以上三个范围的值)。
有什么高效的 算法?
先谢谢了。 我自己的想法 先对 数组a 进行排序使用java 的arrays.sort 的方法排序 然后再用 折半算法 去找范围。想问问大家还有什么其他好的算法?
问题补充
这个应该是最高效率的了 你自己在控制台测试就知道 分给我吧。我等分问问题!
这个题有什么陷进?咋看都是一个循环就完事了
[quote="duooluu"]这个题有什么陷进?咋看都是一个循环就完事了[/quote]
难道一个for,外加一个if,两个else if,一个else?
int tmp = 0;
int b = new b[10000]; int b=0;
int c = new b[10000]; int c=0;
int d = new b[10000]; int d=0;
int e = new b[10000]; int e=0;
for(int i= 0 ; i <= 10000; i++){
tmp = a[i];
if(tmp>=5&&tmp<=100){
b[b++] =tmp;
continue;
}
if(tmp>=500&&tmp<=3000){
c[c++] =tmp;
continue;
}
if(tmp>=4000&&tmp<=6000){
d[d++] =tmp;
continue;
}
e[e++]=tmp;
}
最高效方法,只循环10000次!
而且并不是每次都执行完 循环体
if 使用 && 逻辑,系统自动使用短路原理 if如果为false 只需要执行一半就知道