随手小代码——二分法排序

=================================版权声明=================================

版权声明:本文为博主原创文章 未经许可不得转载 

请通过右侧公告中的“联系邮箱(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 }

=======================================================================

每天动动手,千里之堤,溃于蚁穴。

原文地址:https://www.cnblogs.com/wlsandwho/p/4681282.html