二分搜索法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法运算终止。
前提是:有序数组
步骤
-
令 L为0, R为 n− 1。
-
如果 L> R,则搜索以失败告终。
-
令 m(中间值元素)为“( L+ R) / 2”加上下高斯符号。
-
如果A m< T,令 L为 m+ 1并回到步骤二。
-
如果A m> T,令 R为 m- 1并回到步骤二。
-
当A m= T,搜索结束;回传值 m。
这个
迭代步骤会持续通过两个变量追踪搜索的边界。有些实际应用会在算法的最后放入相等比较,让比较循环更快,但平均而言会多一层迭代。