数据结构:二分查找python(一)

思路:二分查找仅仅适应于有序的数组,数组内部元素要是排好序的,整个过程就是不断跟中间元素进行比较,等于直接输出true,大于中间元素的话,说明可能在左边,我们可以将左边看成一个新数组,再找中间元素进行比较;不断循环进行。当一开始,找的数大于中间元素,我们把右边看成一部分,重新找中间元素进行比较,不断循环。上面两部分循环结束还没有的话,该元素不在数组当中。

  我们先求数组中间元素所在位置即(start+last)//2,不断折半过程也是这样求,在原来数组上进行操作

  循环条件为:start<=last,直接到一个元素之后才退出。

def binary_sort(alist,item):
    start=0
    last=len(alist)-1
    while start<=last:
        n=(start+last)//2
        if alist[n]==item:
            return True
        elif alist[n]>item:
            last=n-1
        else:
            start=start+1
    return False


a=[10,26,36,44,59,88,97,113,156]
print(binary_sort(a,10))
print(binary_sort(a,89))

  结果:

 

posted @ 2020-05-19 15:48  Roronoa-Zoro  阅读(132)  评论(0编辑  收藏  举报