二分查找是我接触的第一个算法。
但是其实我们最早接触的关于二分查找就是那个猜数字的游戏。
也就是,生成一百以内的随机数,给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是要查找的数,比较简单就不赘述了。
//纪念一下我第一个接触的算法。算法确实很难,很烧脑。但是坚持下去,慢慢对着模板刷题,早晚会有那么一瞬间突然就都明白了。我觉得一天能学一个算法就很好。万事开头难,加油。
//这一生,总要为你爱的人拼一次
网友评论