国外经典计算机科学教材·算法I-IV(C++实现):基础数据结构排序和搜索(第3版) [Algorithms in C++ Parts 1-4 Fundamentals, Data Structures, Sorting, Searching] pdf

国外经典计算机科学教材·算法I-IV(C++实现):基础数据结构排序和搜索(第3版) [Algorithms in C++ Parts 1-4 Fundamentals, Data Structures, Sorting, Searching]

内容简介

《算法I-IV基础数据结构排序和搜索》(第3版)内容涵盖了基本的数据结构、排序算法、搜索算法以及它们的相关应用。内容包括扩展了对数组、链表、字符串树及其他基本数据结构的介绍;关于算法的量化分析等。

Robert Sedgewick完全重写了他的著作,对它进行了充分的扩展和更新,涵盖了目前重要的算法和数据结构。Christopher Van Wyk和Sedgewick开发的新实现采用的是C++语言,这种实现不仅能够直接地表达算法,而且给编程者提供了实践的方法,以便在真正的应用中测试这些算法。

新的版本提供了很多新算法,而且对每个算法的解释也比以前的版本详细很多。新的版面设计以及详细、富有创意并且具有注释的插图,使《算法I-IV基础数据结构排序和搜索(第3版)》的表达能力大大地提高了。第三版保留了将理论和实践成功混合在一些的特点,正是这一点,使Sedgewick的著作成为25万多名程序员无价的参考资源。

《算法I-IV基础数据结构排序和搜索(第3版)》是全卷的前半部分,涵盖了基本的数据结构、排序算法、搜索算法以及它们的相关应用。虽然《算法I-IV基础数据结构排序和搜索(第3版)》实质上可以用于各种语言的程序设计,Christopher Van Wyk和Sedgewick的实现都采用了C++类和ADT实现的自然对应。

作者简介

Robert Sedgewick 是普林斯顿大学计算机系的William O.Baker教授,也是Adobe Systems公司的主管,曾经在Xerox PARC、IDA和INRIA公司担任研究员。

Christopher J.Van Wyk 是Drew大学数学和计算机系的教授,曾在BELL实验室担任研究员,现在是那里的顾问。

目录

出版说明
前言
第一部分 基本原理
第一章 简介
1.1 算法
1.2 示例:连通问题
1.3 合并-查找算法
1.4 前景展望
1.5 总结
第二章 算法分析原理
2.1 实现和经验分析
2.2 算法分析
2.3 函数的增长
2.4 大O符号
2.5 递归基础知识
2.6 算法分析举例
2.7 保证、预测和限制
第一部分参考资料
第二部分 数据结构
第三章 基本数据结构
3.1 构建组件
3.2 数组
3.3 链表
3.4 基本的链表处理
3.5 链表的内存分配
3.6 字符串
3.7 复合数据结构
第四章 抽象数据类型
4.1 抽象对象和对象集合
4.2 下推栈ADT
4.3 栈ADT客户示例
4.4 栈ADT的实现
4.5 创建一个新ADT
4.6 FIFO队列和广义队列
4.7 复制和索引项
4.8 一级ADT
4.9 基于应用的ADT范例
4.10 前景展望
第五章 递归与树
5.1 递归算法
5.2 分治法
5.3 动态编程
5.4 树
5.5 二叉树的数学性质
5.6 树遍历
5.7 递归二叉树算法
5.8 图通历
5.9 前景展望
第二部分参考资料
第三部分 排序算法
第六章 基本排序方法
6.1 游戏规则
6.2 选择排序
6.3 插入排序
6.4 冒泡排序
6.5 基本排序方法的执行特性
6.6 Shell排序法
6.7 对其他类型的文件进行排序
6.8 索引和指针排序
6.9 链表排序
6.10 关键字索引统计
第七章 快速排序
7.1 基本算法
7.2 快速排序算法的性能特性
7.3 栈大小
7.4 小的子文件
7.5 利用三个元素的中间元素来划分
7.6 重复值
7.7 字符串和向量
7.8 选择
第八章 归并及归并排序
8.1 二路归并
8.2 抽象的合适归并算法
8.3 自顶向下的归并排序
8.4 对基本排序方法进行改进
8.5 自底向上的归并排序
8.6 执行典型的归并排序算法
8.7 使用链表执行归并排序
8.8 再次讨论递归过程
第九章 优先队列与堆排序
9.1 基本的实现方法
9.2 堆的数据结构
9.3 基于堆的算法
9.4 堆排序
9.5 优先队列抽象数据类型
9.6 索引元素的优先队列
9.7 二项式队列
第十章 基数排序
10.1 比特、字节、字
10.2 二进制快速排序
10.3 MSD基数排序
10.4 三路基数快速排序
10.5 LSD基数排序
10.6 基数排序的特性
10.7 运行时间低于线性的排序
第十一章 特殊用途的排序方法
11.1 巴彻尔奇偶归并排序
11.2 排序网络
11.3 外部排序
11.4 “排序-归并”的实现
11.5 并行“排序-归并”
第三部分参考资料
第四部分 搜索算法
第十二章 符号表和二叉搜索树
12.1 符号表抽象数据类型(ADT)
12.2 关键字索引检索
12.3 顺序搜索
12.4 二叉搜索
12.5 二叉搜索树
12.6 BST的性能特性
12.7 符号表的索引实现
12.8 在BST的根进行的插入
12.9 其他ADT函数的BST实现
第十三章 平衡树
13.1 随机化BST
13.2 发散BST
13.3 自上而下2-3-4树
13.4 红黑树
13.5 跳跃表
13.6 性能特性
第十四章 散列
14.1 散列函数
14.2 链地址法
14.3 线性探测
14.4 双重散列
14.5 动态散列表
14.6 综述
第十五章 基数检索
15.1 数字搜索树
15.2 线索(trie)
15.3 帕氏线索
15.4 多叉线索和TST
15.5 文本字符索引算法
第十六章 外部排序
16.1 游戏规则
16.2 索引顺序存取
16.3 B树
16.4 可扩充散列
16.5 综述
第四部分参考资料

感悟与笔记

如果输入一对数字p 和q,即假设这对数字连通(connective),连通有传递性比如1连通2,2连通3,则1自动连通3,要求编一个程序在输入p和q的情况下输出新的连通对。

#include <iostream.h>
static const int N = 1000;
int main()
  { int i, p, q, id[N];
    for (i = 0; i < N; i++) id[N] = i;
      while (cin >> p >> q)
        { int t = id[p];
          if (t == id[q]) continue;
          for (i = 0; i < N; i++)
            if (id[i] == t) id[i] = id[q];
          cout << " " << p << " " << q << endl;
          }
    }

分析一下书上的程序,显然,输入p,q,如果数组id[]中id[p] == id[q[的话,就可以抽象为连通。第一个for语句将id[]初始化,很明显,输入p,q相同时,id[p] == id[q],即任意数字自己与自己连通(自反性 )。当p,q值不同,首先用一个for遍历数组id[],将所有与变量t(被赋值为id[p])相同的数组值置为id[q],此时id[p]==id[q],则不同的p,q可以视为连通。然后输出p和q

本题关键在于连通的抽象,即id[]数组中任意两个元素值相同,则两个相同值在数组中的两个不同下标的数字连通。

会员免费下载

链接:https://pan.baidu.com/s/1mvpmF55maiGYFv2VU8O9aQ

提取码: ****** 查看

¥69/年 开通VIP会员

成为本站VIP会员即可无限下载。 请先点击百度网盘,看资源是否还在,不在请点击链接通知站长补资源。

资源标签点击标签可查看对应分类的资源

C++数据结构与算法

资源推荐

免费 图解数据结构:使用Java

C++ 程序设计语言:第4部分 标准库(原书第4版)

C++编程思想(两卷合订本)

CSS世界

JavaScript DOM编程艺术(第2版)

C++ Primer Plus(第6版) 中文版

Vue.js快速入门

Java编程思想(第4版) [thinking in java]

Copyright © 2021-2022 知识猫. All Rights Reserved.