入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

python的二分查找实现

创建时间:2015-08-16 投稿人: 浏览次数:405

基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如 果x<a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果x>a[n/2],则我们只要在数组a的右 半部继续搜索x。

优点:比较次数少,查找速度快,平均性能好

缺点:待查表为有序表,且插入删除困难


python代码:

def binarySearch(lists,select):
    i=0
    j=len(lists)-1
    for k in range(j/2+1):
        if i>j:
            return -1
        zj = (i+j)/2
        if lists[zj] == select:
            return zj
        elif lists[zj] > select:
            j = zj - 1
        else:
            i =zj + 1

if __name__ == "__main__":
    arr = [1,4,6,8,9,11]
    print binarySearch(arr,6)



声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。