阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      算法

      算法

      Sedgewick之巨著,与高德纳TAOCP一脉相承

      几十年多次修订,经久不衰的畅销书

      涵盖所有程序员必须掌握的50种算法

      算法领域的经典参考书 众多图例实现图解算法和算法导论 基于Java语言实现算法和数据结构 熟练掌握算法设计与分析




      内容简介

      《算法(第 4 版)》全面讲述算法和数据结构的必备知识,具有以下几大特色。

      • 1、 算法领域的经典参考书:Sedgewick 畅销著作的新版,反映了经过几十年演化而成的算法核心知识体系
      • 2、内容全面:全面论述排序、搜索、图处理和字符串处理的算法和数据结构,涵盖每位程序员应知应会的 50 种算法
      • 3、全新修订的代码:全新的 Java 实现代码,采用模块化的编程风格,所有代码均可供读者使用
      • 4、与实际应用相结合:在重要的科学、工程和商业应用环境下探讨算法,给出了算法的实际代码,而非同类著作常用的伪代码
      • 5、富于智力趣味性:简明扼要的内容,用丰富的视觉元素展示的示例,精心设计的代码,详尽的历史和科学背景知识,各种难度的练习,这一切都将使读者手不释卷
      • 6、科学的方法:用合适的数学模型讨论算法性能,这些模型是在真实环境中得到验证的
      • 7、与网络相结合:配套网站 algs4.cs.princeton.edu 提供了本书内容的摘要及相关的代码、测试数据、编程练习、教学课件等资源

      作者简介

      Robert Sedgewick,斯坦福大学博士,导师为 Donald E. Knuth,从 1985 年开始一直担任普林斯顿大学计算机科学系教授,曾任该系主任,也是 Adobe Systems 公司董事会成员,曾在 Xerox PARC、国防分析研究所(Institute for Defense Analyses)和法国国家信息与自动化研究所(INRIA)从事研究工作。他的研究方向包括解析组合学、数据结构和算法的分析与设计、程序可视化等。

      Kevin Wayne,康奈尔大学博士,普林斯顿大学计算机科学系高级讲师,研究方向包括算法的设计、分析和实现,特别是图和离散优化。

      目录

      第 1 章  基础

      • 1.1 基础编程模型
      • 1.1.1 Java 程序的基本结构
      • 1.1.2 原始数据类型与表达式
      • 1.1.3  语句
      • 1.1.4  简便记法
      • 1.1.5  数组
      • 1.1.6  静态方法
      • 1.1.7  API
      • 1.1.8  字符串
      • 1.1.9  输入输出
      • 1.1.10  二分查找
      • 1.1.11  展望
      • 1.2  数据抽象
      • 1.2.1  使用抽象数据类型
      • 1.2.2  抽象数据类型举例
      • 1.2.3  抽象数据类型的实现
      • 1.2.4  更多抽象数据类型的实现
      • 1.2.5  数据类型的设计
      • 1.3  背包、队列和栈
      • 1.3.1  API
      • 1.3.2  集合类数据类型的实现
      • 1.3.3  链表
      • 1.3.4  综述
      • 1.4  算法分析
      • 1.4.1  科学方法
      • 1.4.2  观察
      • 1.4.3  数学模型
      • 1.4.4  增长数量级的分类
      • 1.4.5  设计更快的算法
      • 1.4.6  倍率实验
      • 1.4.7  注意事项
      • 1.4.8  处理对于输入的依赖
      • 1.4.9  内存
      • 1.4.10  展望
      • 1.5  案例研究:union-find 算法
      • 1.5.1  动态连通性
      • 1.5.2  实现
      • 1.5.3  展望

      第 2 章  排序

      • 2.1  初级排序算法
      • 2.1.1  游戏规则
      • 2.1.2  选择排序
      • 2.1.3  插入排序
      • 2.1.4  排序算法的可视化
      • 2.1.5  比较两种排序算法
      • 2.1.6  希尔排序
      • 2.2  归并排序
      • 2.2.1  原地归并的抽象方法
      • 2.2.2  自顶向下的归并排序
      • 2.2.3  自底向上的归并排序
      • 2.2.4  排序算法的复杂度
      • 2.3  快速排序
      • 2.3.1  基本算法
      • 2.3.2  性能特点
      • 2.3.3  算法改进
      • 2.4  优先队列
      • 2.4.1  API
      • 2.4.2  初级实现
      • 2.4.3  堆的定义
      • 2.4.4  堆的算法
      • 2.4.5  堆排序
      • 2.5  应用
      • 2.5.1  将各种数据排序
      • 2.5.2  我应该使用哪种排序算法
      • 2.5.3  问题的归约
      • 2.5.4  排序应用一览

      第 3 章 查找

      • 3.1 符号表
      • 3.1.1 API
      • 3.1.2 有序符号表
      • 3.1.3 用例举例
      • 3.1.4 无序链表中的顺序查找
      • 3.1.5 有序数组中的二分查找
      • 3.1.6 对二分查找的分析
      • 3.1.7 预览
      • 3.2 二叉查找树
      • 3.2.1 基本实现
      • 3.2.2 分析
      • 3.2.3 有序性相关的方法与删除操作
      • 3.3 平衡查找树
      • 3.3.1 2-3 查找树
      • 3.3.2 红黑二叉查找树
      • 3.3.3 实现
      • 3.3.4 删除操作
      • 3.3.5 红黑树的性质
      • 3.4 散列表
      • 3.4.1 散列函数
      • 3.4.2 基于拉链法的散列表
      • 3.4.3 基于线性探测法的散列表
      • 3.4.4 调整数组大小
      • 3.4.5 内存使用
      • 3.5 应用
      • 3.5.1 我应该使用符号表的哪种实现
      • 3.5.2 集合的 API
      • 3.5.3 字典类用例
      • 3.5.4 索引类用例
      • 3.5.5 稀疏向量

      第 4 章  图

      • 4.1  无向图
      • 4.1.1  术语表
      • 4.1.2  表示无向图的数据类型
      • 4.1.3  深度优先搜索
      • 4.1.4  寻找路径
      • 4.1.5  广度优先搜索
      • 4.1.6  连通分量
      • 4.1.7  符号图
      • 4.1.8  总结
      • 4.2  有向图
      • 4.2.1  术语
      • 4.2.2  有向图的数据类型
      • 4.2.3  有向图中的可达性
      • 4.2.4  环和有向无环图
      • 4.2.5  有向图中的强连通性
      • 4.2.6  总结
      • 4.3  最小生成树
      • 4.3.1  原理
      • 4.3.2  加权无向图的数据类型
      • 4.3.3  最小生成树的 API 和测试用例
      • 4.3.4  Prim 算法
      • 4.3.5  Prim 算法的即时实现
      • 4.3.6  Kruskal 算法
      • 4.3.7  展望
      • 4.4  最短路径
      • 4.4.1  最短路径的性质
      • 4.4.2  加权有向图的数据结构
      • 4.4.3  最短路径算法的理论基础
      • 4.4.4  Dijkstra 算法
      • 4.4.5  无环加权有向图中的最短路径算法
      • 4.4.6  一般加权有向图中的最短路径问题
      • 4.4.7  展望

      第 5 章  字符串

      • 5.1  字符串排序
      • 5.1.1  键索引计数法
      • 5.1.2  低位优先的字符串排序
      • 5.1.3  高位优先的字符串排序
      • 5.1.4  三向字符串快速排序
      • 5.1.5  字符串排序算法的选择
      • 5.2  单词查找树
      • 5.2.1  单词查找树
      • 5.2.2  单词查找树的性质
      • 5.2.3  三向单词查找树
      • 5.2.4  三向单词查找树的性质
      • 5.2.5  应该使用字符串符号表的哪种实现
      • 5.3  子字符串查找
      • 5.3.1  历史简介
      • 5.3.2  暴力子字符串查找算法
      • 5.3.3  Knuth-Morris-Pratt 子字符串查找算法
      • 5.3.4  Boyer-Moore 字符串查找算法
      • 5.3.5  Rabin-Karp 指纹字符串查找算法
      • 5.3.6  总结
      • 5.4  正则表达式
      • 5.4.1  使用正则表达式描述模式
      • 5.4.2  缩略写法
      • 5.4.3  正则表达式的实际应用
      • 5.4.4  非确定有限状态自动机
      • 5.4.5  模拟 NFA 的运行
      • 5.4.6  构造与正则表达式对应的
      • 5.5  数据压缩
      • 5.5.1  游戏规则
      • 5.5.2  读写二进制数据
      • 5.5.3  局限
      • 5.5.4  热身运动:基因组
      • 5.5.5  游程编码
      • 5.5.6  霍夫曼压缩

      第 6 章  背景

      索引

      目录
      目录