二分查找

来源:互联网 发布:进口商品数据 编辑:程序博客网 时间:2024/05/17 22:24

二分查找是一种算法,其输入是一个有序的元素列表。如果要 查找的元素包含在列表中,二分查找返回其位置;否则返回null。

下面的示例说明了二分查找的工作原理。我随便想一个1~100的数字。
你的目标是以最少的次数猜到这个数字。你每次猜测后,我会说小了、大了或对了。

从 50 开始。
小了,但排除了一半的数字!至此,你知道1~50都小了。接下来,你猜75。
大了,那余下的数字又排除了一半!使用二分查找时,你猜测的是中间的数字,从而每次都 将余下的数字排除一半。接下来,你猜63(50和75中间的数字)。

假设你要在字典中查找一个单词,而该字典包含240 000个单词, 如果要查找的单词位于字典末尾,使用简单查找将需要240 000步。使用二分查找时,每次 排除一半单词,直到最后只剩下一个单词。因此,使用二分查找只需18步。


需要记住的:

一般而言,对于包含n个元素的列表,用二分查找最多需要log2n步,而简单查找最多需要n步。


代码:

def binary_search(list, item):  # low and high keep track of which part of the list you'll search in.  low = 0  high = len(list) - 1  # While you haven't narrowed it down to one element ...  while low <= high:    # ... check the middle element    mid = (low + high) // 2    guess = list[mid]    # Found the item.    if guess == item:      return mid    # The guess was too high.    if guess > item:      high = mid - 1    # The guess was too low.    else:      low = mid + 1  # Item doesn't exist  return None


参考资料:算法图解

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 英雄三国天命英雄 梦三国天命无双时间 天命玄鸟 降而生商 尽人事 听天命 天和防务 天和局 天和追风膏 天和 天和地 碧水天和 天和前滩 天和小区 天和一号 天和公司 天和百货 天和医院 天和广场 天和汽车 天和麻将机 天和医馆 中交天和 天和大厦 养天和 天和锦园 王天和 天和集团 天和餐饮 天和城 天和日丽 天和马自达 天和超市 周天和李若雪 周天和李若雪第22章 坐月子30天和42天区别 周天和李若雪免费 流产十天和老公从屁股 古景天和郭晓敏 林天和秦若菲全集 张天和陈奕辰 古景天和郭晓敏全集免费 免费林天和秦若菲全集