导语:
本文主要介绍了关于在python中二分查找法实现的相关知识,包括python数组排序,以及实现二分查找这些编程知识,希望对大家有参考作用。
如果要在有序数据中找到想要的数据,二分查找法是一种很好的方法,可以大大缩短查找时间,是一种常用的查找方法。二进制搜索很容易写,但很难写正确。下面小编就给大家简单介绍一下二分查找,并演示代码的使用。
1、
二分查找
:在没有重复的有序列表中,找到列表的元素。
2、
特点
(1)必须针对于有序列表
(2)该列表必须无重复
(3)按下标索引查找
3、
使用方法
非递归实现:
def binary_search(alist, item):
"""二分查找 非递归方式"""
n = len(alist)
start = 0
end = n - 1
while start <= end:
mid = (start + end) // 2
if alist[mid] == item:
return True
elif item < alist[mid]:
end = mid - 1
else:
start = mid + 1
return False
if __name__ == '__main__':
li = [17, 20, 26, 31, 44, 54, 55, 77, 93]
# print(binary_search(li, 55))
# print(binary_search(li, 100))
递归实现:
def binary_search_2(alist, item):
"""二分查找 递归方式"""
n = len(alist)
if 0 == n:
return False
mid = n // 2
if alist[mid] == item:
return True
elif item < alist[mid]:
return binary_search_2(alist[:mid], item)
else:
return binary_search_2(alist[mid + 1:], item)
if __name__ == '__main__':
li = [17, 20, 26, 31, 44, 54, 55, 77, 93]
# print(binary_search(li, 55))
# print(binary_search(li, 100))
虽然二分查找的效率很高,但是表应该是key排序的。排序本身是一项耗时的操作。即使使用有效的排序方法,它也需要 O(nlgn) 时间。而且,二分查找只适用于顺序存储结构,不能在链表上实现二分查找。小伙伴们注意啦~
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 如何编写python模块09/07
- ♥ 手把手教你使用sublime搭建python开发环境12/10
- ♥ python中print函数输出中sep和end的区别08/27
- ♥ python开发中如何实现延迟调用?12/29
- ♥ 如何在python中设置参数的范围09/01
- ♥ 如何用python开发应用程序08/28
内容反馈