二分查找

二分查找

二分查找是一种算法,其输入是一个有序的元素列表,如果要查找的元素包含在列表中,二分查找返回其位置。与简单查找从头开始找不同,二分查找从中间开始找,如果中间元素大于我们要找的元素,则可以排除中间元素以及以后的元素,如果中间元素小于我们要找的元素,则可以排除中间元素以及以前的元素。用二分查找最多需要 log ⁡ 2 n \log_2n log2n步,而简单查找最多需要n步。

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

list1=[1,2,4,5,7,23,45,257,999]
print(searchNumber(list1,2))#1
print(searchNumber(list1,3))#None

对数

log ⁡ 10 100 \log_{10}{100} log10100相当于问将多少个10相乘结果为100,答案是两个,因此 log ⁡ 10 100 \log_{10}{100} log10100=2,对数运算是幂运算的逆运算。

大O表示法

大O表示法是一种特殊的表示法,指出了算法的速度有多快,下面从快到慢顺序列出了经常遇到的5种大O运行时间:

  • O( log ⁡ n \log_n logn),也叫对数时间,这样的算法包括二分查找。
  • O(n),也叫线性时间,这样的算法包括简单查找。
  • O( n ∗ log ⁡ n n*\log_n nlogn),这样的算法包括快速排序。
  • O( n 2 n^2 n2),这样的算法包括选择排序。
  • O(n!),这样的算法包括旅行商问题的解决方案。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页