算法与Python

算法与Python 知识量:10 - 40 - 100

2.2 二分查找><

什么是二分查找- 2.2.1 -

二分查找,也称为折半查找,是一种效率较高的查找方法。但是,它要求线性表必须采用顺序存储结构,且表中元素按关键字有序排列。

二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果xa[n/2],则只要在数组a的右半部继续搜索x。

二分查找法的优点是每次查找都使搜索范围缩小一半,因此效率较高。它的基本思想是利用元素间的次序关系,采用分治策略,可以在最坏的情况下用O(log n)完成搜索任务。

问题求解示例- 2.2.2 -

下面是一个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表示该元素不在数组中。