对二分法的感想
二分法通过对问题的规模不断缩半,从而使时间复杂度大大降低,在二分法思想中,最坏的情况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 }