这里的内容是我学习算法过程的一些记录,希望能一直坚持下去。
学习方法
把所有经典算法写一遍 看算法有关源码 加入算法学习社区,相互鼓励学习 看经典书籍 刷题
基本数据结构和算法
这些算法全部自己敲一遍:
链表
二叉树
二叉树 二叉查找树 伸展树(splay tree 分裂树) 平衡二叉树AVL 红黑树 B树,B+,B* R树 Trie树(前缀树) 后缀树 最优二叉树(赫夫曼树) 二叉堆 (大根堆,小根堆) 二项树 二项堆 斐波那契堆(Fibonacci Heap)
哈希表/散列表 (Hash Table)
字符串算法
BF算法 BM算法
图的算法
图的存储结构和基本操作(建立,遍历,删除节点,添加节点) 最小生成树 拓扑排序 关键路径 最短路径: Floyd,Dijkstra,bellman-ford,spfa
排序算法
交换排序算法
冒泡排序 插入排序 选择排序 希尔排序 快排 归并排序 堆排序
线性排序算法
查找算法
15个经典基础算法
Hash 快速排序 快递选择SELECT BFS/DFS (广度/深度优先遍历) 红黑树 (一种自平衡的二叉查找树) KMP 字符串匹配算法 DP (动态规划 dynamic programming) A*寻路算法: 求解最短路径 Dijkstra:最短路径算法 (八卦下:Dijkstra是荷兰的计算机科学家,提出”信号量和PV原语“,"解决哲学家就餐问题",”死锁“也是它提出来的) 遗传算法 启发式搜索 图像特征提取之SIFT算法 傅立叶变换 SPFA(shortest path faster algorithm) 单元最短路径算法
海量数据处理
Hash映射/分而治之 Bitmap Bloom filter(布隆过滤器) Trie树 数据库索引 倒排索引(Inverted Index) 双层桶划分 外排序 simhash算法 分布处理之Mapreduce
算法设计思想
迭代法 穷举搜索法 递推法 动态规划 贪心算法 回溯 分治算法
推荐阅读
刷题必备
《剑指offer》 《编程之美》 《结构之法:面试和算法心得》 《算法谜题》 都是思维题
基础
算法设计
《算法设计与分析基础》 《算法引论》 告诉你如何创造算法 断货 《Algorithm Design Manual》算法设计手册 红皮书 《算法导论》 是一本对算法介绍比较全面的经典书籍 《Algorithms on Strings,Trees and Sequences》 《Advanced Data Structures》 各种诡异高级的数据结构和算法 如元胞自动机、斐波纳契堆、线段树 600块
延伸阅读
《深入理解计算机系统》 《TCP/IP详解三卷》 《UNIX网络编程二卷》 《UNIX环境高级编程:第2版》 《The practice of programming》 Brian Kernighan和Rob Pike 《writing efficient programs》 优化 《The science of programming》 证明代码段的正确性 800块一本
参考链接和学习网站
July 博客
《数学建模十大经典算法》 《数据挖掘领域十大经典算法》 《十道海量数据处理面试题》 《数字图像处理领域的二十四个经典算法》 《精选微软等公司经典的算法面试100题》 The-Art-Of-Programming-By-July
微软面试100题 程序员编程艺术
基本算法演示
http://sjjg.js.zwu.edu.cn/SFXX/sf1/sfys.html http://www.cs.usfca.edu/~galles/visualization/Algorithms.html
编程网站
http://leetcode.com/ http://openjudge.cn/ 开放在线程序评测平台,可以床架自己的OJ小组 http://ac.jobdu.com/index.php 九度OJ
其它
高级数据结构和算法 北大教授张铭老师在coursera上的课程。完成这门课之时,你将掌握多维数组、广义表、Trie树、AVL树、伸展树等高级数据结构,并结合内排序、外排序、检索、索引有关的算法,高效地解决现实生活中一些比较复杂的应用问题。当然coursera上也还有很多其它算法方面的视频课程。
算法设计与分析 Design and Analysis of Algorithms 由北大教授Wanling Qu在coursera讲授的一门算法课程。首先介绍一些与算法有关的基础知识,然后阐述经典的算法设计思想和分析技术,主要涉及的算法设计技术是:分治策略、动态规划、贪心法、回溯与分支限界等。每个视频都配有相应的讲义(pdf文件)以便阅读和复习
来自:nonstriater (移动开发小冉) · GitHub 作者:@移动开发小冉
|