=================================版权声明=================================
版权声明:本文为博主原创文章 未经许可不得转载
请通过右侧公告中的“联系邮箱(wlsandwho@foxmail.com)”联系我
未经作者授权勿用于学术性引用。
未经作者授权勿用于商业出版、商业印刷、商业引用以及其他商业用途。
本文不定期修正完善,为保证内容正确,建议移步原文处阅读。 <--------总有一天我要自己做一个模板干掉这只土豆
本文链接:http://www.cnblogs.com/wlsandwho/p/4681282.html
耻辱墙:http://www.cnblogs.com/wlsandwho/p/4206472.html
=======================================================================
递归
1 #include "stdafx.h" 2 #include <iostream> 3 4 using namespace std; 5 6 int BinarySearchByWLS(int nArray[],int nLeft,int nRight,int nDes) 7 { 8 if (nLeft>nRight) 9 { 10 return -1; 11 } 12 13 int nIndex=(nLeft+nRight)/2; 14 15 if (nArray[nIndex]==nDes) 16 { 17 return nIndex; 18 } 19 else 20 if (nDes<nArray[nIndex]) 21 { 22 return BinarySearchByWLS(nArray,nLeft,nIndex-1,nDes); 23 } 24 else//nDes>nArray[nIndex] 25 { 26 return BinarySearchByWLS(nArray,nIndex+1,nRight,nDes); 27 } 28 } 29 30 31 int _tmain(int argc, _TCHAR* argv[]) 32 { 33 int nArr[10]={0,1,2,3,4,5,6,7,8,9}; 34 int nIndex=-1; 35 nIndex=BinarySearchByWLS(nArr,0,9,7); 36 cout<<nIndex<<endl; 37 nIndex=BinarySearchByWLS(nArr,0,9,9); 38 cout<<nIndex<<endl; 39 40 return 0; 41 }
非递归
1 #include <iostream> 2 3 using namespace std; 4 5 int BinarySearchByWLS(int nArray[],int nLen,int nDes) 6 { 7 int nIndex=-1; 8 9 int nLeft=0; 10 int nRight=nLen-1; 11 12 while(nLeft<=nRight) 13 { 14 nIndex=(nLeft+nRight)/2; 15 if (nArray[nIndex]==nDes) 16 { 17 return nIndex; 18 } 19 else 20 if (nArray[nIndex]<nDes) 21 { 22 nLeft=nIndex+1; 23 } 24 else 25 if (nArray[nIndex]>nDes) 26 { 27 nRight=nIndex-1; 28 } 29 } 30 31 return -1; 32 } 33 34 int main() 35 { 36 int nArray[10]={0,1,2,3,4,5,6,7,8,9}; 37 int nIndex=-1; 38 nIndex=BinarySearchByWLS(nArray,10,55); 39 cout<<nIndex<<endl; 40 41 return 0; 42 }
=======================================================================
每天动动手,千里之堤,溃于蚁穴。