用Python设计一个时间复杂度为O(logn)的算法
时间: 2023-05-25 16:07:00 浏览: 153
以下是一个时间复杂度为O(logn)的例子:
二分查找算法
二分查找适用于有序序列中查找特定元素的情况。它的时间复杂度为O(logn)。
算法步骤:
1. 设置区间的首、尾指针low和high分别指向数字序列(或某种数据结构)中要查找的区间段。
2. 取中间位置mid,如果mid小于要查找的值,则将low指向mid+1;如果mid大于要查找的值,则将high指向mid-1;否则,mid就是要找的元素。
3. 重复这个过程,直到要查找的元素被找到或区间为空。
示例代码:
def binary_search(arr, low, high, x):
# 递归终止条件:当前区间为空
if high >= low:
mid = (high + low) // 2
# 如果中间元素是要查找的值,则返回它的下标
if arr[mid] == x:
return mid
# 如果中间元素比要查找的值大,则在左半边继续查找
elif arr[mid] > x:
return binary_search(arr, low, mid - 1, x)
# 反之,在右半边继续查找
else:
return binary_search(arr, mid + 1, high, x)
# 如果当前区间为空,则返回-1
else:
return -1
arr = [2, 3, 4, 10, 40]
x = 10
result = binary_search(arr, 0, len(arr)-1, x)
if result != -1:
print("元素在数组中的下标为 %d" % result)
else:
print("元素不在数组中")
阅读全文
相关推荐
















