查找算法: 順序查找 和 二分查找


順序查找:

  順序查找也稱為線性查找,時間復雜度為O(n),基本思想是從頭遍歷數據,直到遍歷的數據和查找的數據一致。

  python列表中的index方法,也是順序查找的一種。

 

二分查找:

  進行二分查找的前提是:列表是有序的;時間復雜度:O(logn)

  基本思想,將待查找的值與列表中間的元素對比,然后更新列表的左或者右邊界.重復直到找到該元素或者遍歷全部元素.

 

如何選擇順序查找還是二分查找:

  1.如果列表是有序的,優先二分查找

  2.如果列表是無序的,分2種情況:

    a. 查找次數較少,使用順序查找

    b. 查找次數較多,先對列表進行排序,再使用二分查找

 

順序查找代碼:

def serial_find(li, item):
    '''順序查找
    '''
    for i in range(len(li)):
        if li[i] == item:  # 列表的li[i],時間復雜度為O(1).
            return i 
    return None 


print(serial_find([1,2,3,4,5,6,7,8], 3))

 

二分查找:

def binary_search(list, item):
    low = 0
    high = len(list) - 1
    
    while low <= high:
        mid = int((low + high) / 2)
        guess = list[mid]
        if guess == item:
            return mid
        if guess > item:
            high = mid - 1
        else:
            low = mid + 1
    return None

my_list = [1, 3, 5, 7, 9]
print(binary_search(my_list, 3))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM