请教一个关于算法的问题!

如何高效的将一个数组进行 值范围的划分?

比如: 有个 数组长度 10000,a[] 并且是10000个随机正数。

现在有另外四个数组或容器分别  b,c,d,e ;

b 存放5-100的值

c 存放 500-3000的值

d 存放 4000-6000的值

e 存放 其他(不上以上三个范围的值)。



有什么高效的 算法?

先谢谢了。 我自己的想法 先对 数组a 进行排序使用java 的arrays.sort 的方法排序 然后再用 折半算法 去找范围。想问问大家还有什么其他好的算法?
问题补充

luogui551 写道
难道一个for,外加一个if,两个else if,一个else?


如果 a中的记录有很多 如果100000条 放在 80个划分范围容器里。 对个数组中的对象 要比较80次,100000个对象就要 比较判断 80*100000 效率太低了!

这个应该是最高效率的了 你自己在控制台测试就知道 分给我吧。我等分问问题!

这个题有什么陷进?咋看都是一个循环就完事了

[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 只需要执行一半就知道