对二分法的感想

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

时间: 2024-10-30 02:29:58

对二分法的感想的相关文章

二分法思想体会和结队编程感想

1.二分法思想 二分法在编程中是一种十分重要的算法,其主要思想是将问题区间不断的折半进而能更快的寻找到目标,二分法能将数据较大的问题规模很好地缩小. 使用条件:数组中的元素有序            时间复杂度:O(log2n) 二分法算法: int BIN(int a[], int key, int n) { int left = 0; int right = n - 1; while (left <= right) { int middle = (left + right) / 2; if

二分法体会与结队感想

二分法思想是个基础但又极其重要的思想,C++,Java,数据结构,算法设计等多门课程都详细地讲述了一遍二分法. 对于一个已排序的长数组来说,二分法其O(NlogN)的时间复杂度,对于效率的提升是毋庸置疑的,而且二分法用途广泛,实用且方便.但这一切的前提是数组已排序,对于无序表与链表,二分法便无能为力. 对于结队编程,我们之间的交流主要有互相核对一下答案,分享一波编程思路,有分歧的点进行讨论,队友的存在真的能减少许多错误. 原文地址:https://www.cnblogs.com/Lumasaev

对二分法的理解和结对编程情况

一.对二分法的理解 基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的左半段中查找;若x大于当前位置值则在数列的右半段中继续查找,直到找到为止. 时间复杂度: 最好情况:1次 最坏情况:O(log n)次 感想:二分算法充分利用了元素间的次序关系,采用分治策略,并且便于初学者学习理解.相对顺序查找这种方法的效率较高,它能在大多数的情况,例如数据量很大,并且有序的时候,实现更快的数据查找功能,也是比较常用且易于

day05匿名函数,内置函数,二分法,递归,模块

yield作为表达式来使用的方式 #grep -rl 'python /root """ 查找root下文件中含有python的文件 """ import os def init(func): def wrapper(*args,**kwargs): g=func(*args,**kwargs) next(g) return g return wrapper @init def search(target): while True: search

读《平凡的世界》感想(一)

读<平凡的世界>感想(一) 平凡的世界是一本经典的书,一直想看,最近终于开始品读这部巨著."平凡的世 界"是路遥文集中份量最重的一部长篇,全景式地描写了中国现代城乡生活,通过复杂 的矛盾纠葛,以孙少平等人位代表刻画了社会各阶层普通人们的形象,人生的自尊.自 强与自信,人生的奋斗与拼搏,挫折与追求,痛苦与欢乐,纷繁地交织,读来令人荡气 回肠. 全书的主角是孙少平,他是一个平凡而普通的人,他没有过人的武艺或超群的智慧, 他也有世俗的攀比心和青年人的迷茫:那他凭什么成为一部文学巨

【软件工程】一个学期软件工程课的感想

软件工程课是个不错的课,因为教课老师嗓门很大,PPT做的很有意思,上课从来没有点过我的名字,万分荣幸. 软件工程课的脉络很清晰,就是个各种软件开发,个人软件开发,结对软件开发还有结组软件开发.针对这三种软件开发,各写了一个程序,就从这三个程序入手说起吧. 一.              查询一段英文短文中的单词出现的频度.说实话,遇到这样的题,我只想说一句:呵呵.这样的题网上肯定一大堆,随便百度一个就交差了.但是这是第一个程序,那么简单就直接放弃挣扎是不是太弱了,于是就自己写了一个,写了好久,但

读&lt;&lt;大数据时代&gt;&gt;的一些感想

第一次听说<<大数据时代>>这本书,是在网上看到的央视搞的一个2013中国好书评选活动推荐的25本"中国好书"的榜单中看到的.然后迅速上豆瓣上查看了一下对该书的评价,一看非常高,再加上央视的推荐是从2013在中国出版的40册图书中选出25本,可以说是精华了.果断定了一本,花了三天时间读完了.   大数据这个名词或者说概念从被提出开始,经过短短几年的发展,已经传的沸沸扬扬了,经常见诸媒体上.好像哪家媒体的科技板块每天不弄一些这样的新闻条,它就显得不够档次一样.这是

Python写个二分法查找

笔者是一个通信测试攻城狮,之前做过一段时间的持续集成.工作内容只要就是对主线版本进行基本通信功能守护,测试执行都是自动化完成,也是那个时候开始接触到代码. 当时经常遇到的一个问题是:某一天我们发现版本有重大BUG,但是到上一次我们验证PASS中间已经经历过很多版本,我们需要手动从中间找到第一个出现BUG的版本,当然最简单的方法是二分法,取中间版本,根据有没有BUG再缩小范围,继续取中间版本...当时我的想法就是思路很固定,完全可以自动化完成,可惜当时我不会写代码...直到今天看Python递归函

函数嵌套 ,名称空间与作用域 ,闭包函数 ,装饰器 ,迭代器, 生成器 三元表达式,列表解析,生成器表达式 递归与二分法, 内置函数

函数嵌套名称空间与作用域闭包函数装饰器迭代器生成器三元表达式,列表解析,生成器表达式递归与二分法内置函数--------------------------------------------函数的嵌套调用:在调用一个函数的过程中,又调用了其他函数函数的嵌套定义:在一个函数的内部,又定义另外一个函数def max(x,y): if x>y: return x else: return ydef max1(a,b,c,d): res=max(a,b) res2=max(res,c) res3=ma