データ構造アルゴリズム--1 逐次検索 二分探索

逐次検索の時間計算量は O(n)

Python で関数 enumerate を使用すると、リストを走査し、enumerate を通じてそのインデックスと値を返すことができます。

def linnear_search(li, val):
    for ind, v in enumerate(li):
        if v == val:
            return ind
    else:
        return None

リストの長さを反復処理することもできます。

def linear_search(li, val):     # 顺序查找复杂度为O(n)
    for i in range(len(li)):
        if li[i]==val:
            return i
    return

O(1)<O(logn)<O(n)<O(nlogn)<O(n*n)

しかし、二分探索の時間計算量は O(logn) です。

def binary_search(li,val):
    left=0
    right=len(li)-1
    while left<=right:
        mid=(left+right) // 2
        if li[mid]==val:    # 最后会找到mid
            return mid
        elif li[mid]>val:   # mid值大与查找值,就需要去左半侧查找,right指针就改变
            right=mid-1
        else:
            left=mid+1
    else:
        return None

おすすめ

転載: blog.csdn.net/qq_64685283/article/details/132286309
おすすめ