欢迎光临澳大利亚新华书店网 [登录 | 免费注册]

    • 图解算法和数据结构/图灵程序设计丛书
      • 作者:(日)大槻兼资|责编:王军花|译者:唐彬
      • 出版社:人民邮电
      • ISBN:9787115662828
      • 出版日期:2025/04/01
      • 页数:304
    • 售价:43.92
  • 内容大纲

        本书由具有丰富编程竞赛经验的作者执笔撰写,荣获日本“2021年IT工程师图书特别大奖”。作为一本算法和数据结构的入门书,本书内容充实、深入浅出,包含了来自知名编程竞赛平台AtCoder的丰富例题和大量配以详细注释的C++代码片段,不仅系统讲解了常见的各类算法,而且还通过图解、代码和思考题的方式,致力提高读者的算法实践能力和问题解决能力。因此这既是一本入门书,能够激发初学者对算法的兴趣,又是一本注重实践的书,让想成为算法高手的读者可以在深入理解算法和数据结构的基础上,快速掌握编程思维,终身受用。
        本书既适合初学算法的读者,也适合希望深入掌握各类实用算法设计技术的读者阅读和参考。
  • 作者介绍

        大槻兼资,1988年出生,2014年硕士毕业于东京大学研究生院信息理工学系。目前在NTT(日本电信)工作,并为SoftwareDesign杂志撰写“通过拼图锻炼算法能力”专栏。他坚持在Qiita等面向程序员的技术平台上分享算法知识、推动算法普及。同时出于个人兴趣,目前仍在参与编程竞赛。
  • 目录

    第1章  算法概述
      1.1  算法是什么
      1.2  算法示例(1):深度优先搜索和广度优先搜索
      1.3  算法示例(2):匹配
      1.4  算法的描述方法
      1.5  学习算法的意义
    第2章  计算复杂度和大O记法
      2.1  计算复杂度是什么
      2.2  计算复杂度的大O记法
      2.3  计算复杂度的示例(1):偶数的枚举
      2.4  计算复杂度的示例(2):最近点对问题
      2.5  计算复杂度的使用
      2.6  关于计算复杂度的说明
      2.7  Landau的大O记法的细节(*)
      2.8  小结
    第3章  设计技巧(1):穷举搜索
      3.1  学习穷举搜索的意义
      3.2  穷举搜索(1):线性搜索法
      3.3  线性搜索法的应用
      3.4  穷举搜索(2):成对的穷举搜索
      3.5  穷举搜索(3):组合的穷举搜索(*)
      3.6  小结
    第4章  设计技巧(2):递归和分治法
      4.1  递归是什么
      4.2  递归示例(1):欧几里得算法
      4.3  递归示例(2):斐波那契数列
      4.4  记忆化处理并应用动态规划
      4.5  递归示例(3):使用递归函数的穷举搜索法
      4.6  分治法
      4.7  小结
    第5章  设计技巧(3):动态规划
      5.1  动态规划是什么
      5.2  动态规划的示例问题
      5.3  关于动态规划的各种概念
      5.4  动态规划示例(1):背包问题
      5.5  动态规划示例(2):求解编辑距离
      5.6  动态规划示例(3):区间分割的最优化
      5.7  小结
    第6章  设计技巧(4):二分搜索
      6.1  数组的二分搜索
      6.2  C++的std::lower_bound()
      6.3  泛化的二分搜索
      6.4  进一步泛化的二分搜索(*)
      6.5  应用示例(1):猜年龄游戏
      6.6  应用示例(2):std::lower_bound()的使用示例
      6.7  应用示例(3):将最优化问题归约为判定问题
      6.8  应用示例(4):求解中位数
      6.9  小结
    第7章  设计技巧(5):贪婪法
      7.1  贪婪法是什么

      7.2  贪婪法不一定产生最优解
      7.3  贪婪法模式(1):不会变差的交换
      7.4  贪婪法模式(2):现在越好,未来也越好
      7.5  小结
    第8章  数据结构(1):数组、链表、哈希表
      8.1  学习数据结构的意义
      8.2  数组
      8.3  链表
      8.4  链表的插入操作和删除操作
      8.5  数组与链表的比较
      8.6  哈希表
      8.7  小结
    第9章  数据结构(2):栈和队列
      9.1  栈和队列的概念
      9.2  栈和队列的操作和实现
      9.3  小结
    第10章  数据结构(3):图与树
      10.1  图
      10.2  利用图进行建模的示例
      10.3  图的实现
      10.4  加权图的实现
      10.5  树
      10.6  有序树与二叉树
      10.7  使用二叉树的数据结构示例(1):堆
      10.8  使用二叉树的数据结构示例(2):二叉查找树
      10.9  小结
    第11章  数据结构(4):并查集
      11.1  并查集是什么
      11.2  并查集的机制
      11.3  降低并查集的计算复杂度的方法
      11.4  并查集的优化方法之一:按大小合并
      11.5  并查集的优化方法之二:路径压缩
      11.6  并查集的实现
      11.7  并查集的应用:计算图的连通分量个数
      11.8  小结
    第12章  排序
      12.1  排序是什么
      12.2  排序算法的优劣
      12.3  排序(1):插入排序
      12.4  排序(2):归并排序
      12.5  排序(3):快速排序
      12.6  排序(4):堆排序
      12.7  排序算法的下界
      12.8  排序(5):桶排序
      12.9  小结
    第13章  图(1):图搜索
      13.1  学习图搜索的意义
      13.2  深度优先搜索与广度优先搜索
      13.3  使用递归函数进行深度优先搜索
      13.4  前序遍历和后序遍历

      13.5  最短路径算法中的广度优先搜索
      13.6  深度优先搜索和广度优先搜索的计算复杂度
      13.7  图搜索的示例(1):查找s-t路径
      13.8  图搜索的示例(2):二部图判定
      13.9  图搜索的示例(3):拓扑排序
      13.10  图搜索的示例(4):树上的动态规划(*)
      13.11  小结
    第14章  图(2):最短路径问题
      14.1  最短路径问题是什么
      14.2  最短路径问题的整理
      14.3  松弛
      14.4  DAG上的最短路径问题:动态规划法
      14.5  单源最短路径问题:贝尔曼-福特算法
      14.6  单源最短路径问题:迪杰斯特拉算法
      14.7  全点对间最短路径问题:弗洛伊德-沃舍尔算法
      14.8  参考:势能和差分约束系统(*)
      14.9  小结
    第15章  图(3):最小生成树问题
      15.1  最小生成树问题是什么
      15.2  克鲁斯卡尔算法
      15.3  克鲁斯卡尔算法的实现
      15.4  生成树的结构
      15.5  克鲁斯卡尔算法的正确性(*)
      15.6  小结
    第16章  图(4):网络流
      16.1  学习网络流的意义
      16.2  图的连通度
      16.3  最大流和最小割问题
      16.4  福特-富尔克森方法的实现
      16.5  应用示例(1):二部匹配
      16.6  应用示例(2):点连通度
      16.7  应用示例(3):项目选择
      16.8  小结
    第17章  P与NP问题
      17.1  问题难度的衡量方式
      17.2  P类与NP类
      17.3  P≠NP猜想
      17.4  NP完全问题
      17.5  多项式时间归约的例子
      17.6  NP困难问题
      17.7  停机问题
      17.8  小结
    第18章  难题应对策略
      18.1  面对NP困难问题
      18.2  特定情况下的解决方法
      18.3  贪婪法的局限
      18.4  局部搜索与模拟退火法
      18.5  分支限界法
      18.6  整数规划问题的表述
      18.7  近似算法

      18.8  小结
    后记
    推荐书目(图灵社区下载)