java版本的二分法算法實(shí)現(xiàn)發(fā)布日期:07-06-25 05:59 文章來源:互聯(lián)網(wǎng)
{ int[] iArray={1,5,9,14,27,39,41,50,62,222,345,612,981,1207,8721}; //在此數(shù)字序列中尋找 int iSeek=345; //尋找345的位置 int iCount=0; //比較的次數(shù) public int xunhuan() //普通的循環(huán)法,最少需要比較一次,比如查找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; //相當(dāng)于指針的東西 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("普通的循環(huán)查找,需要比較的次數(shù):"+eff.xunhuan()); System.out.println("二分法查找,需要比較的次數(shù):"+eff1.erfen()); } } |
|