二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它。一开始,范围覆盖整个数组。将数组的中间项与T进行比较,可以排除一半元素,范围缩小一半。就这样反复比较,反复缩小范围,最终就会在数组中找到T,或者确定原以为T所在的范围实际为空。对于包含N个元素的表,整个查找过程大约要经过log(2)N次比较。
#!/usr/bin/env python # -*- coding: utf-8 -*- def func(l, n): if not l: return False length = len(l) if length == 1: if l[0] == n: return True else: return False idx = length/2 num = l[idx] if num == n: return True if num > n: return func(l[:idx], n) if num < n: return func(l[idx+1:], n) if __name__ == "__main__": l = range(10) n = 5 print func(l, n)
原文地址:http://blog.csdn.net/ws_cs_dn/article/details/38980259