数据结构:二分查找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))
结果: