龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

java版本的二分法算法实现

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
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() //普通的循环法,最少需要比较

  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());
   }
  }
  
精彩图集

赞助商链接