基于线性查找:  时间复杂度为O(n)

l=list(range(200000000))
def linearserch(l,aim):
    for index,val in enumerate(l):
        if aim == val:
            return index
    else:
        return "没有您要的查找的值"
linearserch(l,9999999)

 

基于二分查找:O(log(n)/log2n)

l=list(range(200000000))
def Binary_search(l,aim):
    left=0
    right=len(l)-1
    while left <=right:
        mid = (left + right) // 2
        val = l[mid]
        if aim < val:
            right = mid-1
        elif aim > val:
            left = mid +1
        else:
            return mid
    else:
        return None
Binary_search(l,9999999)

 

 

两者之间效率对比:

import time

def timer(func):
    def inner(l,aim):
        start = time.time()
        ret =func(l,aim)
        print(time.time()-start)
        return ret
    return inner

l=list(range(200000000))
@timer
def linearserch(l,aim):
    for index,val in enumerate(l):
        if aim == val:
            return index
    else:
        return "没有您要的查找的值"
linearserch(l,9999999)

@timer
def Binary_search(l,aim):
    left=0
    right=len(l)-1
    while left <=right:
        mid = (left + right) // 2
        val = l[mid]
        if aim < val:
            right = mid-1
        elif aim > val:
            left = mid +1
        else:
            return mid
    else:
        return None
Binary_search(l,9999999)

二分查找及线性查找的效率对比及代码

 

相关文章:

  • 2021-08-02
  • 2022-01-10
  • 2022-03-05
  • 2021-10-29
  • 2021-08-04
  • 2022-12-23
猜你喜欢
  • 2021-10-30
  • 2021-10-31
  • 2021-07-15
  • 2021-11-11
  • 2022-12-23
  • 2021-06-22
相关资源
相似解决方案