1. 程式人生 > >python 算法之查找算法實例

python 算法之查找算法實例

元素 elif 指定 div color 遞歸 python 序列 nbsp

一、查找算法

需求:從指定列表中查到一個元素

先定義一個列表,需要查到的元素是 105

l = [1,3,4,6,10,33,36,45,49, 66, 77, 78, 79, 90, 96, 105, 312, 644, 647] 

1、順序查找(從頭到尾查找,查到就停止,效率低)

def fun1(l, num):
    n = 0
    for i in l:
        n += 1
        print ("count: ", n)
        if i == num:
            return l.index(i)
    return
-1

2、二分查找,也叫拆半查找(要求序列必須是順序的,會將被查找元素先與序列最中間的元素比較,如果小於中間元素,則向左半部分查找,否則向右半部分查找,遞歸下去。效率高,平均性能好)

def fun2(l, num):
    n = 0
    low = 0
    hight = len(l)-1

    while low <= hight:
        n += 1
        mid = (low+hight)//2
        print ("count: ", n)
        if num == l[mid]:
            
return mid elif num < l[mid]: hight = mid - 1 else: low = mid + 1 return -1

兩者輸出比較,順序查找算法用了16次查到該元素,二分查找算法只用了4次,差距明顯

count:  1
count:  2
count:  3
count:  4
count:  5
count:  6
count: ...
count:  15
count:  16
15
count:  1
count:  
2 count: 3 count: 4 15

python 算法之查找算法實例