折半查找算法是对于有序的序列而言的,每次查找后折半,大概缩短了一半的查找区间,是一种效率较高的查找算法。 要求: list必须是顺序结构,且按照关键词大小进行有序排列。 思路: 在有序序列中查找元素,每次取...
折半查找/二分查找算法
给出一个list和一个元素,判断出list中是否存在该元素
浅短理解:
折半查找算法是对于有序的序列而言的,每次查找后折半,大概缩短了一半的查找区间,是一种效率较高的查找算法。
要求:
list必须是顺序结构,且按照关键词大小进行有序排列。
思路:
在有序序列中查找元素,每次取序列中间的元素,如果与要查找元素相等,程序结束;
如果查找元素大于中间元素,则取中间元素后面的序列再进行如上的查找;
如果查找元素小于中间元素,则取中间元素前面的序列再进行如上的查找;
直到找到元素相等,查找成功,或者序列为空,查找失败,程序结束。
python版本:Python2.7.5
# _*_ encoding:utf-8 _*_defbinary_search(lists, key, left, right):'''	lists:有序序列/list	key:要查找的元素	left:查找的起始位置	right:查找的结束位置 -方便使用递归	return:返回查找元素下标	'''# 查找的起始位置大于等于结束位置,查找失败程序结束if left>= right:returnNone mid=(right- left)//2+ left# 折半,中间元素下标if lists[mid]> key:# 中间元素大于查找元素,则查找前半序列return binary_search(lists, key, left, mid-1)elif lists[mid]