二分/折半查找python——数据结构1

二分/折半查找

顾名思义,对半查找,每次查找从中间开始,比中间的数大就去掉前半部分,对后半部分继续查找,直到找到对应数。
前提条件:顺序排列 有序数组

low = 0
high = len(list) - 1
二分/折半查找python——数据结构1_第1张图片

比较中间的元素

mid = (low + high) / 2		#非偶自动向下圆整
guess = list[mid]

小了,改low:

if guess < elem:
	low = mid + 1

大了,改high:

if guess > elem:
	high = mid - 1
二分/折半查找python——数据结构1_第2张图片
def binary_search(list, elem):
	low = 0;
	high = len(list- 1
	
	while low <= high:		#待查找列表仅有一个元素
		mid = (low + high)
		guess = list[mid]
		if guess == elem:
			return mid
		if guess > elem:
			high = mid - 1
		else:
			low = mid + 1
	return None

my_list = [2, 6, 9, 10, 13]
print binary_search(my_list, 10)

运行时间: O(log n)【对数时间】

你可能感兴趣的:(笔记)