【分治】二分搜索Python实现

文章目录

    • @[toc]
      • 问题描述
      • `Python`实现
      • 时间复杂性

问题描述

  • 给定已排好序的 n n n个元素a[0:n - 1],在这 n n n个元素中找出一特定元素 x x x

Python实现

def binary_search(arr, target):
    low = 0
    high = len(arr) - 1

    while low <= high:
        mid = (low + high) // 2

        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            low = mid + 1
        else:
            high = mid - 1

    return -1


arr = [1, 3, 5, 7, 9]
target = 5

res = binary_search(arr, target)

if res != -1:
    print(f'目标元素 {target} 在数组中的索引为 {res}')
else:
    print('目标元素不在数组中')

时间复杂性

  • 在最坏情况下,while循环被执行了 O ( log ⁡ n ) O(\log{n}) O(logn)次,循环体内运算需要 O ( 1 ) O(1) O(1)时间,因此整个算法在最坏情况下的时间复杂性为 O ( log ⁡ n ) O(\log{n}) O(logn)

你可能感兴趣的:(算法,分治算法,Python)