数据结构之查找(python版)

二分查找

基本思想:支持下标索引(顺序表)的有序列表,一开始定位到中间位置,如果该数字比要查找的数字大,则继续以此方法查找列表的后半部分;如果该数字比要查找的数字小,则以此方法继续查找列表的前半部分;如果相等,当前位置即位要查找的元素。

def binary_search(alist, item):
	"""二分查找:递归实现"""
	n = len(alist)
	if n >= 1:
		mid = n//2
		if alist[mid] == item:
			return True
		elif item < alist[mid]:
			return binary_search(alist[:mid], item)
		else:
			return binary_search(alist[mid+1:], item)
	else:
		return False
def binary_search(alist, item):
	"""二分查找:非递归"""
	n = len(alist[])
	first = 0
	last = n-1
	while first <= last:
		mid = (first + last) // 2
		if alist[mid] = item:
			return True
		elif alist[mid] > item:
			last = mid-1
		else:
			first = mid+1

时间复杂度:O(logn)

你可能感兴趣的:(数据结构)