[笔记]《算法图解》第一章 算法简介

大O表示法

- 大O表示法指出了算法有多快,例如列表包含n个元素。简单查找需要检查每个元素,因此需要执行n次操作。

- 大O表示法指的并非以秒为单位的速度。大O表示法能够让你比较操作数,它指出了算法运行的增速。

- 二分查找需要执行logn次操作,使用大O表示法,运行时间O(logn)。

- 简单查找的运行时间总是O(n),但是大O表示法说的是最糟糕的情形。因此简单查找的运行时间不超过O(n)。

常见的大O运行时间

- O(logn)对数时间,常见算法:二分查找。

- O(n)线性时间,常见算法:简单查找。

- O(n*logn),快速排序。

- O(n^2),选择排序。

- O(n!),旅行商算法。

算法绘制网格所需要的时间:

二分算法(python实现)

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    \"""
     @desc: binary search
     @author: Bingo Cai
    \"""

    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))
    print(binary_search(my_list, -1))

小结

- 二分查找的速度比简单查找快的多。

- O(logn)比O(n)快。需要搜索的元素越多,前者比后者就快的越多。

- 算法运行时间并不以秒为单位。

- 算法运行时间是从其增速的角度度量的。

- 算法运行时间用大O表示法表示。

猜你喜欢

转载自www.cnblogs.com/everfight/p/grokking_algorithms_note_1.html