• 对二分法的感想


    二分法通过对问题的规模不断缩半,从而使时间复杂度大大降低,在二分法思想中,最坏的情况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 }
  • 相关阅读:
    web.xml中/与/*的区别
    restController相关
    mvc:resources
    RequestMethod 相关
    Springside学习
    命名规范的反思
    C++ 构造中调用构造
    C++ 匿名对象的生命周期
    C++ 构造函数的对象初始化列表
    C++ 类的构造函数使用规则
  • 原文地址:https://www.cnblogs.com/chenhanwu/p/9782938.html
Copyright © 2020-2023  润新知