现有三个区间[1-15],[16-30]和[31-45]
当我给一个值为8的int变量,我要计算出它在第一个区间里,返回1
给值为17的int变量返回2
以此类推我有一个想法,比如共有一万个区间,我给定一个值,首先从中间的那个区间开始计算,如果小于的话就从起始的区间到中间的那个区间再折半查,以此类推,最终就能找到它属于的那个区间段,但我觉得这不是好的方法,有没有比较合适的计算方法啊请高手们指点,说一下大概的思路,别写代码,谢谢了
当我给一个值为8的int变量,我要计算出它在第一个区间里,返回1
给值为17的int变量返回2
以此类推我有一个想法,比如共有一万个区间,我给定一个值,首先从中间的那个区间开始计算,如果小于的话就从起始的区间到中间的那个区间再折半查,以此类推,最终就能找到它属于的那个区间段,但我觉得这不是好的方法,有没有比较合适的计算方法啊请高手们指点,说一下大概的思路,别写代码,谢谢了
解决方案 »
- 大神求教,软件的授权开发
- java 鼠标移动的音效 怎么设置播放次数
- 1,2,3,4,5,6共6个数, 组成一个没有重复数字的六位数,4不能在第二位,2和3不能邻接,请列出所有可能的组合
- 关于 URL 通信的简单问题,请你侃侃
- 有人用过Sun Java Desktop System 2003吗?怎么样啊?有没有截图?
- applet invalid stream header
- Iterator遍历的问题
- 关于获得tree的路径的问题
- 为什么Java的IDE多为Java语言开发的啊?up有分!!
- Oracle查询出现异常
- 存储过程调用小问题~望指教?
- 能否给一个关于关于多线程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;