在Coursera上学习了普林斯顿的算法公开课(课程链接配套教材网站)。收获很多,对基本的排序,查找算法也有了一些了解,但是时间一久就全忘记了。在接下来的文章中按照课程及配套教材对重要的知识点做一个总结,当作复习与备忘。

Table of Contents

  1. 概要
  2. 主要内容

概要

算法是指一种有限、确定、有效的并适合用计算机程序来实现的解决问题的方法。

算法的实现大多数情况下与所使用的编程语言无关,它描述了解决问题的步骤。使用算法的主要原因是它能够节约非常多的资源(时间资源、存储空间资源等),甚至能够让一些本不可能完成的任务变为可能。 在大多数算法中需要适当的组织数据,而为了组织数据数据就产生了数据结构。数据结构是存储、组织数据的方式,它和算法的关系十分密切。

“Algorithms + Data Structures = Programs.” — Niklaus Wirth

主要内容

在算法这门课程中将主要讨论以下内容:

主题 数据结构与算法
数据类型 stack, queue, bag, union-find, priority queue
排序 quicksort, mergesort, heapsort, radix sorts
查找 BST, red-black BST, hash table
BFS, DFS, Prim, Kruskal, Dijkstra
字符串 KMP, regular expression, tries, data compression
高级 B-tree, k-d tree, suffix array, maxflow