`
eyeName
  • 浏览: 5850 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java二分查找法

阅读更多
今天用java二分查找法写了一个测试小例子。


public class Text {

/**
* @param args
*/
public static void main(String[] args) {

   binaryChop(78);

}
/*
* java二分查找法
*/
public static void binaryChop(int search) //search参数传入要查找的元素
{
   int a[]={1,5,2,73,26,21,78};
   for(int i=0;i<a.length;i++) //用冒泡法给数值排序
   {
    for(int j=0;j<a.length;j++)
    {
     if(a[i]<a[j]) //有小到大排序,如果想由小到大,改为a[i]>a[j]即可
     {
      int tmp=a[i];
      a[i]=a[j];
      a[j]=tmp;
     }
    }
   }
//   Arrays.sort(a); //利用java自带工具排序
 
   for(int i:a) //打印出排序过的数值
   {
    System.out.print(i+" ");
   }
   System.out.println();
 
   int lower=0;          //记录第一个元素
   int upper=a.length-1;
   int index=-1;
   while(lower<=upper)
   {
    index=(lower+upper)/2;    //记录中间元素,用两边之和除2
    int currentValue=a[index];
    if(currentValue==search){ //如果得到的数与要查找的数相等则break退出;
             break;
    }else if(currentValue<search){ //如果得到的数要小于查找的数、就用下标加1;否则减1
     lower=index+1;
    }else{
     upper=index-1;
    }
   }if(lower<=upper)
   {
    System.out.println(search+"在数组中的第:"+(index+1)+"位");
   }else
   {
    System.out.println("里面没有这个元素!");
   }
}

}
分享到:
评论
1 楼 yyclang 2011-09-21  
,貌似有问题吧?我测试了一下,好像数据跟现实的顺序有问题!除了第一个数字顺序对,其他的都错了吧!

相关推荐

Global site tag (gtag.js) - Google Analytics