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

大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表示法表示。
posted @ 2018-05-27 20:30  bingo彬哥  阅读(228)  评论(0编辑  收藏  举报
本站总访问量