对二分法的感想

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

 

转载于:https://www.cnblogs.com/chenhanwu/p/9782938.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值