算法之二分查找

二分查找是我接触的第一个算法。
但是其实我们最早接触的关于二分查找就是那个猜数字的游戏。
也就是,生成一百以内的随机数,给n次机会猜。
想必大家都知道一定是每次一半一半的猜才能快。
二分法原理不难,优点是查找次数少,速度快,性能好。
缺点则是要求必须是有序表。

下面直接上模板代码:
截图是为了不希望直接复制粘贴..还是要自己敲比较好
(截图是为了不希望直接复制粘贴..还是要自己敲比较好…虽然二分是最简单的算法,但是自己敲的习惯还是要有…以后复杂的算法每个人的模板都不一样,还是要自己探索适合自己的…orz)

给一个暑假集训的例题。

HDU-2199
http://acm.hdu.edu.cn/showproblem.php?pid=2199

ac代码:

这里写图片描述

可以说是模板题了。

再可以做一个修路的题。
csu-1023
http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1023

ac代码:这里写图片描述
这里写图片描述

另外算是两个小技巧吧:
1.对于middle比较稳妥的定义是
middle=left+(right-left)/2;

2.STL二分查找函数
binary_search(a,a+n,num)
a是数组。num是要查找的数,比较简单就不赘述了。

//纪念一下我第一个接触的算法。算法确实很难,很烧脑。但是坚持下去,慢慢对着模板刷题,早晚会有那么一瞬间突然就都明白了。我觉得一天能学一个算法就很好。万事开头难,加油。

//这一生,总要为你爱的人拼一次

猜你喜欢

转载自blog.csdn.net/qq_39936389/article/details/82562670