现有三个区间[1-15],[16-30]和[31-45]
当我给一个值为8的int变量,我要计算出它在第一个区间里,返回1
给值为17的int变量返回2
以此类推我有一个想法,比如共有一万个区间,我给定一个值,首先从中间的那个区间开始计算,如果小于的话就从起始的区间到中间的那个区间再折半查,以此类推,最终就能找到它属于的那个区间段,但我觉得这不是好的方法,有没有比较合适的计算方法啊请高手们指点,说一下大概的思路,别写代码,谢谢了
当我给一个值为8的int变量,我要计算出它在第一个区间里,返回1
给值为17的int变量返回2
以此类推我有一个想法,比如共有一万个区间,我给定一个值,首先从中间的那个区间开始计算,如果小于的话就从起始的区间到中间的那个区间再折半查,以此类推,最终就能找到它属于的那个区间段,但我觉得这不是好的方法,有没有比较合适的计算方法啊请高手们指点,说一下大概的思路,别写代码,谢谢了
解决方案 »
- 关于文件输入输出的一个问题
- 在线等Runtime.getRuntime().exec()问题
- 局域网中的Socket不能连接。后续 ps:怎么才能在防火墙开着的情况下通信??
- 举手之劳,JDBC访问SQL Server
- 求救,JSP,希望进来看下~~~ 在线等啊
- 新年到,新年好,在j2se里第一次散分,望多多捧场!
- 请教如何拒绝恶意的Socket连接???
- 简单问题,难读书上印错了吗?在线等,
- 我是初学小菜,求助!(答者送分)
- java中在通过udp传送大量信息时如何防止丢包。具体应怎么作?如何解决?请给出具体的代码。请大家踊跃发言!!!!!!。
- 存储过程调用小问题~望指教?
- 能否给一个关于关于多线程synchronized应用的例子,确切体现也多线程的同步应用,我是新手请关照
{if (i<15*j)
{return j;
break;}
}
int r = i/15 +1;i = 17;
r = i/15 +1;
{
if(i<=15*j)
{return j;
break;}
}
int[2,10000] area={..........................}
public search(int n, int start,int end){
int tem = (start+end)/2;
if(n>=area[0,tmp] && n<=[1,tmp]){
return tmp;
} else {
if(n<area[0,tmp]) end=tmp-1;
else if(n>area[1,tmp]) start=tmp+1;
return search(n, start, end);
}
}search(100, 0, 10000)如果区间是没规律又没有固定排序,就只能遍历搜索。活则做一个影射排列,再按折半查找。这些数据结构有很多效率高的查找方法
------------------
int i = 8;
int r = i/15 +1;i = 17;
r = i/15 +1;
-------------------
不完全对的,当i=15、30、45、…………时,就错了。改正方法:r = (i+14)/15;