普林斯顿算法(0.0)简介
在Coursera上学习了普林斯顿的算法公开课(课程链接, 配套教材网站)。收获很多,对基本的排序,查找算法也有了一些了解,但是时间一久就全忘记了。在接下来的文章中按照课程及配套教材对重要的知识点做一个总结,当作复习与备忘。
概要
算法是指一种有限、确定、有效的并适合用计算机程序来实现的解决问题的方法。
算法的实现大多数情况下与所使用的编程语言无关,它描述了解决问题的步骤。使用算法的主要原因是它能够节约非常多的资源(时间资源、存储空间资源等),甚至能够让一些本不可能完成的任务变为可能。 在大多数算法中需要适当的组织数据,而为了组织数据数据就产生了数据结构。数据结构是存储、组织数据的方式,它和算法的关系十分密切。
“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 |