对二分法的感想

二分法通过对问题的规模不断缩半,从而使时间复杂度大大降低,在二分法思想中,最坏的情况k次,由2的k次方等于n,可知,最坏的情况下查找log n 次,时间复杂度相对普通的方法而言降低了,在处理大规模问题上就会有明显的好处,比如顺序查找时间复杂度O(n),而二分查找为O(log n) 。在编程的时候,组建一个编程小团队是一个不错的做法,可以相互讨论各种算法思想,思想碰撞,相互提出问题,相互解答,这会让我们更好地理解算法的根源,更好地去认识算法。

比如c++中实现一个二分查找,前提是数组对象已经排好序的了。

 

 1 #include <iostream>
 2 using namespace std;
 3 int i=0;
 4 void binsearch(int a[],int b,int left,int right)
 5 {
 6     i++;  //此处的i用来计算查找的次数
 7     cout<<i<<endl;
 8     int mid=(left+right)/2;
 9     if(left==right&&a[mid]!=b)
10     {
11         cout<<"no"<<" "<<b<<endl;
12         return;
13     }
14     if(a[mid]==b)
15     {
16         cout<<"yes"<<" "<<a[mid]<<endl;   
17         return;
18     } 
19     else if(a[mid]>b)
20         right=mid-1;
21     else if(a[mid]<b)
22         left=mid+1;
23     binsearch(a,b,left,right);
24 }
25 
26 int main()
27 {
28     int a[6]={1,3,4,8,9,13};
29     binsearch(a,10,0,5);
30 }

 

posted @ 2018-10-13 15:01  chenhanwu  阅读(403)  评论(0编辑  收藏  举报