Chinaunix首页 | 论坛 | 博客
  • 博客访问: 147745
  • 博文数量: 20
  • 博客积分: 1748
  • 博客等级: 上尉
  • 技术积分: 211
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-22 15:24
个人简介

想成功,得发疯,头脑简单向前冲!

文章分类

全部博文(20)

文章存档

2012年(5)

2011年(8)

2010年(7)

分类: Java

2012-07-19 17:01:18

注意:由于二分查找法的原理,首先得保证要查找的数组是一个有序数列,所以在查找之前必须做一个排序的工作。
 
代码如下:

点击(此处)折叠或打开

  1. //二分查找法

  2. class Find
  3. {
  4.     public void find(int liftIndex,int reghtIndex,int val,int arr[])
  5.     {
  6.         /*
  7.          * liftIndex 最左边的下标
  8.          * reghtIndex 最右边的下标
  9.          * val 要查找的数
  10.          * midIndex 中间数的下标
  11.         */
  12.         int midIndex=(liftIndex+reghtIndex)/2;
  13.         
  14.         if(liftIndex<=reghtIndex)
  15.         {
  16.             //比较

  17.             //如果要查找的数比中间的数大则接下来在右边找

  18.             if(val>arr[midIndex])
  19.             {
  20.                 find(midIndex+1,reghtIndex,val,arr);
  21.             }
  22.             //如果要查找的数比中间的数小则接下来在左边找

  23.             else if(val<arr[midIndex])
  24.             {
  25.                 find(liftIndex,midIndex-1,val,arr);
  26.             }
  27.             //如果刚好相等,则找到了

  28.             else if(val==arr[midIndex])
  29.             {
  30.                 System.out.println("找到"+val+"了,是第"+(midIndex+1)+"个数字");
  31.             }
  32.         }
  33.     }
  34. }

阅读(3510) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~