算法学习----二分查找算法

Posted Mark小秀才

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法学习----二分查找算法相关的知识,希望对你有一定的参考价值。

 

关于二分查找,一直稀里糊涂,终于在看了一些资料后,总结出一个比较实用的记法。

http://www.cnblogs.com/huang1990/archive/2013/04/02/2995284.html

http://my.oschina.net/wangliannet/blog/140480

总的原则为,区间规则形式一样,区间之间不重复,不漏值。

令待查数组为source[],数组维数为size,要查的的数位key.

区间划分的原理:1、左闭右闭的划分法[ )

                           head=0,tail=size,mid=(head+tail)/2;

                           总区间为[0,size)

                           开始查找,if(key<source[mid]),则在前半部查找,区间令为[head,mid);即tail=mid

                                         if(key==source[mid]),则值已找到,  区间为   [mid,mid)

                                         if(key>source[mid]),则在后半部查找,区间令为[mid+1,tail);即head=mid+1

                           以上这三个部分的区间正好合为整个待查区间。

                     2、左闭右闭的划分法[ ]

                           head=0,tail=size-1,mid=(head+tail)/2;

                           总区间为[0,size-1]

                           开始查找,if(key<source[mid]),则在前半部查找,区间令为[head,mid-1];即tail=mid-1

                                         if(key==source[mid]),则值已找到,  区间为   [mid,mid]

                                         if(key>source[mid]),则在后半部查找,区间令为[mid+1,tail];即head=mid+1

                           以上这三个部分的区间正好合为整个待查区间。

这样是不是很好记了呢?

以下是C#实现[]形式的代码:

http://www.cnblogs.com/huang1990/archive/2013/04/02/2995284.html

 

以上是关于算法学习----二分查找算法的主要内容,如果未能解决你的问题,请参考以下文章

算法学习|二分查找

在路上---学习篇Python 数据结构和算法 二分查找二叉树遍历

学习快速排序和二分查找算法

二分查找算法合集-1

二分查找算法(下):通过 LeetCode 周赛学习二分查找算法

算法学习系列 -- 二分查找