算法与Python 知识量:10 - 40 - 100
二分查找,也称为折半查找,是一种效率较高的查找方法。但是,它要求线性表必须采用顺序存储结构,且表中元素按关键字有序排列。
二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果xa[n/2],则只要在数组a的右半部继续搜索x。
二分查找法的优点是每次查找都使搜索范围缩小一半,因此效率较高。它的基本思想是利用元素间的次序关系,采用分治策略,可以在最坏的情况下用O(log n)完成搜索任务。
下面是一个Python实现的二分查找的例子:
def binary_search(arr, x): low = 0 high = len(arr) - 1 while low <= high: mid = (low + high) // 2 if arr[mid] == x: return mid # 找到x,返回其索引 elif arr[mid] < x: low = mid + 1 # x在右半部分 else: high = mid - 1 # x在左半部分 return -1 # 没找到x,返回-1 # 测试二分查找函数 arr = [2, 3, 4, 10, 40] x = 10 result = binary_search(arr, x) if result != -1: print("元素在数组中的索引为", str(result)) else: print("元素不在数组中")
在这个例子中,定义了一个名为binary_search的函数,它接受一个已排序的数组和一个要查找的元素作为参数。然后,它使用while循环来在数组中查找该元素。如果找到了该元素,则返回其索引;否则,返回-1表示该元素不在数组中。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6