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

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

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

请通过右侧公告中的“联系邮箱([email protected])”联系我

未经作者授权勿用于学术性引用。

未经作者授权勿用于商业出版、商业印刷、商业引用以及其他商业用途。                   

 

本文不定期修正完善,为保证内容正确,建议移步原文处阅读。                                                               <--------总有一天我要自己做一个模板干掉这只土豆

本文链接: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 }

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

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

你可能感兴趣的:(二分法)