《图解算法入门:一本书掌握算法要点与诀窍》以直观的图解方式,系统讲解了算法的基本概念、常用数据结构和典型算法实现,帮助读者建立起清晰的算法思维框架。全书内容分为两大部分:基础知识篇和算法篇。基础知识篇涵盖变量、数组、数据结构等编程基础;算法篇详细解析递归、排序等核心算法,并通过大量插图和生活化案例(如找零钱、汉诺塔谜题等)将抽象概念具象化,极大降低了理解难度。书中还提供了JavaScript示例程序,读者无需搭建复杂环境,通过浏览器即可动手实践,增强学习体验。本书突出特点是“图解+实战”,几乎每个算法都配有步骤图示和伪代码分析,避免纯文字描述的枯燥,让读者在视觉化过程中轻松掌握算法的本质与应用场景。无论是希望入门编程的读者,还是想要巩固算法基础的学习者,都能从中获得扎实的知识储备和解决实际问题的能力。
本书适合编程初学者、学生以及对算法感兴趣的读者阅读学习。
第1章 算法
01 什么是算法 002
解决问题的处理步骤 002
02 在日常生活中下意识地使用的算法 004
找零的数量 004
03 了解算法能有什么优势 006
能够帮助提升工作效率或优化经营方案 006
04 算法和程序的关系 008
算法在程序中的重要性 008
05 结构化程序设计010
解答复杂的问题010
什么是结构化编程010
三种控制结构012
第2章 变量和数组
01 表示数据的“值”016
表达式和值016
02 表示数据类型的“类型”018
类型018
03 表示数据存放的箱子“变量”020
变量020
04 将数据放入变量“赋值”022
把数据装进箱子里022
变量的代入022
计算结果的赋值022
05 多个数据一起存放“数组”024
数组024
数组元素024
06 字符串“数组”026
逐字分解的数组026
搜索字符串数组的算法026
07 二维数组028
第3章 算法中常用的数据结构
01 数据结构032
什么是数据结构032
基本数据结构032
02 数组(相同类型的变量连续排列的结构)034
数组的特点034
数组的缺点034
03 按顺序列出并链接数据(链表)036
链表的特点036
单向链表038
循环链表038
双向链表038
静态链表(散列)040
静态链表的特点040
04 堆栈(后入先出的链表结构)042
什么是堆栈042
堆栈的特点042
压入和弹出(push和pop)044
日常生活中使用堆栈的场合046
05 队列(先入先出的链表结构)048
什么是队列048
队列的特点048
入队和出队050
日常生活中使用队列的场合052
06 树结构(包括层次关系的非线性数据结构)054
什么是树结构054
树结构的特点054
二叉树056
二叉树的特征056
二叉搜索树058
二叉搜索树遍历060
第4章 基本算法
01 算法的基础是“重复”066
重复(循环)使用的场合066
流程图和伪代码066
02 习惯使用流程图068
流程图中出现的符号068
符号的意义068
尝试使用流程图070
03 习惯伪代码的阅读方法072
一般的程序结构072
声明部分的描述形式074
程序和函数(子程序)声明074
处理部分的描述形式076
选择的描述形式076
循环(重复)的描述形式078
先判断型和后判断型080
函数(子程序)的描述形式082
实际参数(实参)和形式参数(形参)083
变量的作用域(有效范围)084
04 求数据的和086
求和的步骤086
求课程总分的流程图088
求课程总分的程序089
05 求数据的平均值090
求平均值的流程图090
求平均值程序091
06 交换两个数据092
交换数据的步骤092
交换数组元素的流程图094
交换数组元素的程序095
07 求数据的最大值096
求最大值的步骤096
求最大值的流程图098
求最大值程序099
08求数据的最小值100
求最小值的步骤100
求最小值的流程图102
求最小值的程序103
第5章 递归算法
01 什么是“递归”106
像“平行镜”一样的状态106
02 熟悉递归处理108
吃到盘子空了108
递归处理流程110
03 通过递归求数据的和112
求100个数字的总和112
流程图114
04 通过递归求数据的阶乘116
什么是阶乘116
流程图和程序118
05 “汉诺塔”问题怎么解决120
什么是汉诺塔120
汉诺塔(一层)122
汉诺塔(两层)122
汉诺塔(三层)124
06 用算法解决“汉诺塔”问题126
如何解决N层的汉诺塔126
移动N层汉诺塔的步骤128
准备绘制流程图130
汉诺塔函数H与移动的对应关系132
汉诺塔函数流程图(未完成)134
汉诺塔函数结束条件136
汉诺塔函数流程图(完成)138
找出移动步骤的程序138
验证汉诺塔函数的流程140
用JavaScript执行汉诺塔的移动142
第6章 排序算法
01 什么是排序146
数据排序146
7个典型排序146
02 冒泡排序(基本交换法)148
两两比较148
冒泡排序流程图150
冒泡排序程序152
降序(从大到小)的冒泡排序153
03 选择排序(基本选择法)154
冒泡排序的改良版154
选择排序流程图156
选择排序程序158
按降序进行选择排序(从大到小)160
04 插入排序(基本插入法)162
插入到已排列好的数组中162
插入排序流程图164
插入排序程序166
05 希尔排序168
插入排序改进版168
分组方法170
希尔排序流程图172
排序程序176
06 合并排序(归并排序法)178
什么是合并排序178
合并排序的递归处理180
合并排序函数是什么样子呢182
子链表的位置范围怎么表示184
合并排序函数的结束条件186
子链表的排序结束后做什么188
合并排序流程图190
合并排序程序192
07 堆排序194
什么是堆排序194
堆排序的步骤196
堆排序的整体流程图202
堆排序流程图(最小堆函数)204
堆排序程序206
08快速排序208
什么是快速排序208
快速排序示例210
快速排序的步骤(步骤1~步骤2)216
快速排序的步骤(步骤3)218
快速排序流程图(总体)220
分组流程图222
快速排序程序224
结束语