算法设计篇 — C1 Introduction

Python算法设计篇(1) Chapter 1: Introduction

  1. Write down the problem.
  2. Think real hard.
  3. Write down the solution.
    —— “The Feynman Algorithm” as described by Murray Gell-Mann

本节主要是对原书中的内容做些简单介绍,说明算法的重要性以及各章节的内容概要。

1.关于这本书的目的

算法导论是一本经典的大而全的算法书籍,而本书Python Algorithms不是来取代而是来补充算法导论的,因为算法导论提供的是简易的伪代码和详细的证明,而本书主要从作者的教学过程中从更高地层次来讲解算法,并使用Python代码来实现。

[实际阅读之后,我个人感觉这本书虽然名声不大,但是绝对可以和算法导论平分秋色]

2.这本书关于什么?

算法分析,算法设计的基本原则,如何使用Python实现基本的数据结构和算法 (以下内容不难理解就不做翻译了,原文原滋原味更加萌萌哒 ~\(^o^)/~)

What the book is about:
• Algorithm analysis, with a focus on asymptotic running time
• Basic principles of algorithm design
• How to represent well-known data structures in Python
• How to implement well-known algorithms in Python

What the book covers only briefly or partially:
• Algorithms that are directly available in Python, either as part of the language or via the standard library
• Thorough and deep formalism (although the book has its share of proofs and proof-like explanations)

3.为什么我们需要学习算法呢?

学习了算法之后可以帮助我们更加高效地解决问题!

下面是一个简单的线性时间和平方时间的对比例子,后者的运行速度远远慢于前者,这是为什么呢?这与Python中内置的list的实现机制有关,在前面的数据结构篇中介绍过了,list是类似数组一样的动态表,而不是标准的数组形式,所以对于append操作是常数时间,而对于insert操作是线性时间的!感兴趣的话移步阅读数据结构篇

```python
from time import *
t0=time()
count=10**5
nums=[]
for i in range(count):
nums.append(i)

top Created with Sketch.