Algorithms

Preface

全书分为7部分40章,不同的专业/用途可以选择不同的内进行重点学习。

  • mathematical algorithms
  • sorting
  • searching
  • string processing
  • geometric algorithms
  • graph algorithms
  • advanced topics

Introduction

全书选择那些最基础的、却非常重要的算法进行学习,虽然会介绍各个算法的特点和可能的延伸,但因为该书的篇幅,所以不会极其深入的去探讨。

学习算法的最好的办法是实现和测试它,本书使用的是Pascal语言,但你也可以使用其他的现代化语言实现。

作为学习本书的一些必须的准备工作,你需要了解一门语言和他的基本的数据结构,同时具备一些的微积分的知识。另外还会使用到一些线性代数、几何的知识,这一块随着阅读的进行做一些了解即可。

算法复杂度评估是很复杂的问题,本书不会详解,但是会大致介绍算法的预期执行情况。

Chapter 1 Preview

数学知识:两个数x, y的的最大公约数(假设x >= y), 肯定也是y, x-y的最大公约数
递归方法:递归是一种通过将问题拆分为规模更小问题的算法,属于很重要的基础算法,在本书中还会看到多次。需要注意的是,递归需要有终止条件,否则会一直调用下去,这一点很容易被忽视。因为性能原因,在复杂的问题中不建议进行递归,因为递归程序如果被用于解决更复杂的问题。

使用算法的典型的时间复杂度有如下几种:

  • 1
  • N
  • logN
  • N logN
  • N2
  • N3

使用算法常见的的问题是,要么完全不在意时间复杂度,因为代码的复杂度的增加而不愿意以更高性能的方式进行实现,要么为了有限的性能提高过分在意时间复杂度。结合实际条件来进行判别。

猜你喜欢

转载自blog.csdn.net/weixin_34219944/article/details/86983212