算法class ErFenFa 
{
 int[] iArray={1,5,9,14,27,39,41,50,62,222,345,612,981,1207,8721}; //在此数字序列中寻找
 int iSeek=345;   //寻找345的位置
 int iCount=0;   //比较的次数 
  
 public int xunhuan() 
 //普通的循环法,最少需要比较一次,比如查找1,最多需要比较15次,比如8721
 {
  for(int i=0;i<iArray.length;i++)
  {
   iCount++;
   if (iSeek==iArray[i])
    break;
  }
  return iCount;
 }
 public int erfen()
 //二分法查找
 {
  int iIndex=0;   //相当于指针的东西
  int iStart=0;   //
  int iEnd=iArray.length-1;
  while(true)
  {
   iCount++;
   iIndex = (iStart+iEnd)/2;
   if(iArray[iIndex]<iSeek)
   {
    iStart = iIndex;
   }
   else if(iArray[iIndex]>iSeek)
   {
    iEnd = iIndex;
   }
   else
   {
    break;
   }
  }
  return iCount; 
 }
 public static void main(String[] args) 
 {  
  ErFenFa eff=new ErFenFa();
  ErFenFa eff1=new ErFenFa();  
  System.out.println("普通的循环查找,需要比较的次数:"+eff.xunhuan());
  System.out.println("二分法查找,需要比较的次数:"+eff1.erfen());
 }
}
                   
java版本的二分法算法实现
                    80酷酷网    80kuku.com 
       
  
 
 
  
