二分查找与hash查找

不想你离开。 提交于 2019-11-27 14:13:40

二分查找

  有序列表对于我们的实现搜索是很有用的。在顺序查找中,当我们与第一个元素进行比较时,如果第一个元素不是我们要查找的,则最多还有 n-1 个元素需要进行比较。 二分查找则是从中间元素开始,而不是按顺序查找列表。 如果该元素是我们正在寻找的元素,我们就完成了查找。 如果它不是,我们可以使用列表的有序性质来消除剩余元素的一半。如果我们正在查找的元素大于中间元素,就可以消除中间元素以及比中间元素小的一半元素。如果该元素在列表中,肯定在大的那半部分。然后我们可以用大的半部分重复该过程,继续从中间元素开始,将其与我们正在寻找的内容进行比较。  

 1 """
 2 二分查找:
 3     针对的是有序列表或者集合;
 4     找到返回索引;
 5     找不到返回-1.
 6 """
 7 
 8 
 9 def binary_searc(sorted_list, item):
10     low = 0
11     high = len(sorted_list)
12     middle = (low + high) // 2
13     while low <= high:
14         if sorted_list[middle] < item:
15             low = middle + 1
16         elif sorted_list[middle] > item:
17             high = middle - 1
18         else:
19             return middle
20         middle = (low + high) // 2
21     return -1  # 找不到返回-1

hash查找

  hash

    

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!