zoukankan      html  css  js  c++  java
  • [笔记]《算法图解》第一章 算法简介

    大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表示法表示。
  • 相关阅读:
    将php中stat()得到的文件权限转成Linux形式
    Linux终端命令快捷键
    我的测试博客
    java 的反射机制- 代码讲解
    毕业有感
    COPD——团队项目测试心得
    慢阻肺疾病管理APP——第一次迭代心得
    团队项目需求心得——慢阻肺疾病管理APP
    合作和共赢的结对编程——中小学试卷生成器
    项目组队——欣赏与批判队友个人项目源码
  • 原文地址:https://www.cnblogs.com/everfight/p/grokking_algorithms_note_1.html
Copyright © 2011-2022 走看看