首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java减半查找

2012-12-27 
java折半查找public class TextSort2 {??public static void main(String[] args) {??int[] arrs{13,26,2

java折半查找

public class TextSort2 {

?
?public static void main(String[] args) {
??int[] arrs={13,26,27,34,52,88,323};??//数组必须为有序数组
??System.out.println(find(arrs,323));
?}
?
??折半查找:
??数组必须为有序数组
??思路:先找到数组中间位置的数,用要查询的数与其比较:
??如果大于中间数,则往数组中间数的较大一方(右侧查找)
??如果小于中间数,则往数组中间数的较小一方(左侧查找)
??如果等于中间数,则直接返回该位置
??如果没找到,返回-1
??@param arrs 有序数组
??@param key 要查询的数
?private?static?int?find(int[] arrs,int key){
??int?min=0;??//定义最小数索引为0
??int?max=arrs.length-1;???//定义最大数索引为数组长度-1
??int middle;?????????//定义中间数
???while(true){
?????middle=(min+max)/2;???//每次得到中间数
?????if(key==arrs[middle]){??//如果key等于中间数
??????return?middle;
?????}else?if(key>arrs[middle]){
??????min=middle+1;??????//设置最小位置min为middle+1,并从这个位置往后查找
?????}else if(key<arrs[middle]){
??????max=middle-1;??????//设置最大位置max为middle-1,并从这个位置往前查找
?????}
?????if(max<min){????????//如果最小位置min,都大于最大位置索引max,则没找到
??????return?-1;
?????}?
???}
?}


}

热点排行