二分查找

二分查找是我接触的第一个算法。 

但是其实我们最早接触的关于二分查找就是那个猜数字的游戏。 

也就是,生成一百以内的随机数,给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是要查找的数,比较简单就不赘述了。

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

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