二分搜索算法

以前在算法和数据结构当中讨论过小于3/2 ×N -2的算法
原理如下
abcd四个数比较的时候,两两分组,找出各自的大的和小的,需要2次比较
然后大的和大的比较,找到最大,小的和小的比较找到最小
一共是4次比较,找到了最大和最小

对于N个数据的时候,把他们分成N/4个组,每组用4次比较找到其中的最大和最小
总共用了N次比较

把N/4个组内最大的数据之间进行比较找到最大的,需要N/4-1次比较
在N/4个组内最小的数据之间进行比较找到最小的,也需要N/4-1次比较

这样,找到了N个数据当中最大和最小的数据,需要的总比较次数就是
N + N/4 -1 + N/4 – 1 = 3 / 2 * N – 2次

2-8采用二分搜索算法:
⒈比较T[0]与T[1]
⒉如果T[0]>T[1],说明是降序排列:
⑴[a,b] [0,n-1]
⑵i=(b-a)/2+a;
⑶比较T<i>与i的值:
①若T<i>>i;a i+1,即[a,b] [i+1,b],继续执行⑵
②若T<i><i;b i-1,即[a,b] [a,i-1], 继续执行⑵
③若T<i>=i,查找结束,i即为所求的。
⒊如果T[0]<t[1],说明是升序排列:
⑴[a,b] [0,n-1]
⑵i=(b-a)/2+a;
⑶比较T<i>与i的值:
①若T<i>>i;b i-1,即[a,b] [a,i-1],继续执行⑵
②若T<i><i;a i+1,即[a,b] [i+1,b], 继续执行⑵
③若T<i>=i,查找结束,i即为所求的。

二分搜索算法,在最坏情况下的计算时间为O(logn)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部