![]() |
登入帳戶
| 訂單查詢
| |
||
| 臺灣用戶 |
| 品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 | 服務:香港/台灣/澳門/海外 | 送貨:速遞/郵局/服務站 |
|
新書上架:簡體書
繁體書
十月出版:大陸書
台灣書 |
|
share:
|
||||
|
新書推薦: ![]() 《 飞越疯人院 》 售價:HK$ 75.9 ![]() 《 家族财富管理:成功投资七要务(第二版) 》 售價:HK$ 108.9 ![]() 《 时刻人文·始皇好读:帝业与人生的书籍史 》 售價:HK$ 57.2 ![]() 《 幸福博弈论 》 售價:HK$ 75.9 ![]() 《 时刻人文·金钱舞动的东海:货币与奢侈的15—16世纪 》 售價:HK$ 85.8 ![]() 《 时刻人文·保卫共和之都:法国大革命后期巴黎治安体系的建设(1795—1800) 》 售價:HK$ 85.8 ![]() 《 相爱的奥秘:爱的深度解码 》 售價:HK$ 85.8 ![]() 《 余生:清代宦官社会史 》 售價:HK$ 74.8 |
| 編輯推薦: |
| 算法是编程的基石,开发的核心。本书包含55个二维码,300多分钟视频,100多个知识点,50多个示例,适合程序员、计算机专业相关师生,以及对算法感兴趣的读者。 |
| 內容簡介: |
|
这是一本关于数据结构和算法的书,以Java为描述语言,介绍了计算机编程中常用的数据结构和算法。全书共13章,讲述了常见的数据结构、排序算法、位运算、树、递归、回溯算法、贪心算法、双指针和滑动窗口、BFS和DFS、前缀和、动态规划、并查集、其他经典算法等知识。本书内容丰富,实用性强,通过示例练习和问题分析等方式,详细讲解了与算法有关的知识点。本书附赠视频讲解二维码,以及源代码。
來源:香港大書城megBookStore,http://www.megbook.com.hk 本书适合程序员、计算机专业相关师生,以及对算法感兴趣的读者阅读。 |
| 關於作者: |
| 王一博,网名博哥,各大专业网站知名博主,具有10多年的开发经验,2017年开始做算法试题并在公众号发布试题讲解,经常游走在全球30多个算法网站之间,累计做题2000多道,对算法试题有自己独特的解题思路和技巧。 |
| 目錄: |
|
前言
第1章 常见的数据结构/ 1.1数组/ 1.1.1滚动数组/ 1.1.2差分数组/ 1.1.3二维差分数组/ 1.1.4树状数组/ 1.2链表/ 1.3队列/ 1.4栈/ 1.5散列表/ 1.6树/ 1.6.1二叉搜索树/ 1.6.2AVL树/ 1.6.3红黑树/ 1.6.4字典树/ 1.6.5哈夫曼树/ 1.6.6线段树/ 1.6.7笛卡儿树/ 1.6.8其他树/ 1.7堆/ 1.8图/ 1.8.1图的分类/ 1.8.2图的表示方式/ 1.8.3图的遍历/ 1.8.4迪杰斯特拉(Dijkstra)算法/ 1.8.5贝尔曼-福特(Bellman-Ford)算法/ 1.8.6SPFA算法/ 1.8.7弗洛伊德(Floyd)算法/ 1.8.8普里姆(Prim)算法/ 1.8.9克鲁斯卡尔(Kruskal)算法/ 1.8.10博鲁夫卡(Boruvka)算法/ 1.8.11拓扑排序/ 1.9数据结构总结/ 第2章 排序算法/ 2.1冒泡排序/ 2.2选择排序/ 2.3插入排序/ 2.4快速排序/ 2.5归并排序/ 2.6堆排序/ 2.7桶排序/ 2.8基数排序/ 2.9希尔排序/ 2.10计数排序/ 2.11其他排序/ 第3章 位运算/ 3.1位运算的常见操作符/ 3.2位运算的一些简单操作/ 3.3示例练习/ 3.3.1交换两个数字的值/ 3.3.2只出现一次的数字/ 3.3.3有限状态机/ 3.3.4二进制中1的个数/ 3.3.5总的比特位数/ 3.3.6反转二进制/ 3.3.72的幂/ 3.3.84的幂/ 3.3.9交替二进制数/ 3.3.10数字范围的按位与/ 3.3.11字符串长度的最大乘积/ 3.3.12两整数之和/ 3.3.13集合的所有子集/ 第4章 算法秘籍树/ 4.1二叉树的遍历方式/ 4.1.1二叉树的DFS遍历/ 4.1.2二叉树的Morris遍历/ 4.1.3二叉树的BFS遍历/ 4.1.4N叉树的遍历/ 4.2二叉树层次遍历习题/ 4.3二叉树的特性习题/ 4.4二叉树的深度优先搜索习题/ 4.5二叉树的构造/ 4.6二叉树的公共祖先问题/ 第5章 递归/ 5.1递归的理解/ 5.2示例练习/ 5.2.1反转链表/ 5.2.2检查是否是回文链表/ 5.2.3删除链表的倒数第n个节点/ 5.2.4生成括号/ 5.2.5二叉树展开为链表/ 5.2.6将二叉搜索树改为累加树/ 第6章 回溯算法/ 6.1回溯算法的使用/ 6.2示例练习/ 6.2.1解数独/ 6.2.2n皇后/ 6.2.3目标值的组合/ 6.2.4组合/ 6.2.5单词搜索/ 6.3回溯算法的剪枝/ 6.3.1有重复项数字的全排列/ 6.3.2划分为k个相等的子集/ 第7章 贪心算法/ 7.1贪心算法存在的不足/ 7.2示例练习/ 7.2.1柠檬找零/ 7.2.2分发饼干/ 7.2.3分糖果问题/ 7.2.4最小跳跃次数/ 7.2.5无重叠区域/ 第8章 双指针和滑动窗口/ 8.1相向双指针/ 8.1.1回文串/ 8.1.2盛最多水的容器/ 8.2同向双指针/ 8.2.1移动所有的0到数组末尾/ 8.2.2两个链表的第一个公共节点/ 8.3快慢双指针/ 8.3.1判断链表中是否有环/ 8.3.2找出链表的中间节点/ 8.4滑动窗口/ 8.5大小可变窗口/ 8.5.1最长没有重复字符的子串/ 8.5.2最小覆盖子串/ 8.5.3长度最小的连续子数组/ 8.6固定窗口/ 8.6.1平均值最大的子数组/ 8.6.2找到字符串中的异位词/ 8.6.3子数组中的最大值/ 8.7只增不减窗口/ 8.7.1最大连续1的个数/ 8.7.2替换后的最长重复字符/ 8.7.3篮子里的水果/ 第9章 BFS和DFS/ 9.1BFS的使用模板/ 9.2DFS的使用模板/ 9.3示例练习/ 9.3.1岛屿数量/ 9.3.2被围绕的区域/ 9.3.3岛屿的最大面积/ 9.3.4腐烂的苹果/ 9.3.5删除无效的括号/ 9.3.6省份数量/ 第10章 前缀和/ 10.1一维前缀和/ 10.2二维前缀和/ 10.3示例练习/ 10.3.1和为k的子数组/ 10.3.2k个奇数的子数组/ 10.3.3连续数组的长度/ 10.3.4总和可被k整除的子数组/ 10.3.5和为k的路径/ 第11章 动态规划/ 11.1动态规划讲解/ 11.1.1兑换零钱(一)/ 11.1.2国王与金矿/ 11.1.3解题思路/ 11.2背包问题/ 11.2.101背包问题/ 11.2.2完全背包问题/ 11.2.3多重背包问题/ 11.2.4状态压缩/ 11.3组合与排列/ 11.3.1兑换零钱(二)/ 11.3.2加起来和为目标值的组合/ 11.3.3单词拆分/ 11.4背包练习/ 11.4.1目标和(01背包)/ 11.4.2平分子集(01背包)/ 11.4.3最少的完全平方数(完全 背包)/ 11.5其他练习/ 11.5.1最长公共子串/ 11.5.2最长公共子序列/ 11.5.3网格中的不同路径/ 11.5.4最大正方形/ 11.5.5最长上升子序列/ 第12章 并查集/ 12.1并查集的使用/ 12.2并查集优化/ 12.3并查集路径压缩/ 12.4按大小合并优化/ 12.5按秩合并优化/ 12.6示例练习/ 12.6.1岛屿数量/ 12.6.2被围绕的区域/ 12.6.3省份数量/ 12.6.4飞地的数量/ 第13章 其他经典算法/ 13.1KMP算法/ 13.2马拉车算法/ 13.3摩尔投票算法/ 13.4埃氏筛法/ 13.5两个数的最大公约数/ 13.6算术表达式的运算/ 13.6.1中缀表达式转换的括号法/ 13.6.2中缀表达式转换的二叉树法/ 13.6.3中缀表达式转前缀表达式/ 13.6.4中缀表达式转后缀表达式/ 13.6.5后缀表达式求值/ 13.6.6前缀表达式求值/ 13.7牛顿迭代法求平方根/ 13.8Base64编码/ |
| 內容試閱: |
|
数据结构和算法是计算机科学的基石,是计算机的灵魂,要想成为计算机专业人员,学习和掌握算法是十分必要的。不懂数据结构和算法的人不可能写出效率更高的代码。计算机科学的很多新行业都离不开数据结构和算法作为基石,比如大数据、人工智能等。底层开发中也需要使用非常多的数据结构和算法知识,以保证底层系统的稳定性和高效性。
计算机科学家尼古拉斯·沃斯在计算机领域有一句人尽皆知的名言“算法 数据结构=程序”(Algorithms Data Structures=Programs),所以数据结构和算法是程序员必须掌握的技能。尤其是到一些大公司面试的时候,算法更是一个少不了的环节,熟练掌握数据结构和算法,可以开拓我们的视野,提高我们的逻辑思维能力,在写代码和分析官方源码的时候也非常有帮助。学习数据结构和算法的一个好处就是:学完之后知识基本不会过时,可以永远为我们所用。大家都知道程序员需要不停地学习,因为知识更新太快,记得在笔者上大学和后来开始工作的时候,非常喜欢研究官方源码和框架,如痴如醉,但很遗憾,现在很多框架都已被淘汰了,没被淘汰的也被更新得面目全非,然后还要不停地学习其他新的框架。笔者一直在思考,能不能学习一种永不过时的知识。后来就接触了数据结构和算法,这一接触就是好多年,学的那么多知识依然没有过时。比如KMP算法是在1977年被联合发表的,那么多年过去了,这种算法依然没有被淘汰,如果是一个框架,基本上很难保证那么多年还能存在,就算存在也会有大量的更新,还是需要不停地学习。 本书以Java为描述语言,介绍了计算机编程中常用的数据结构和算法,主要内容如下。 第1章:主要介绍了8种数据结构,包括数组、链表、队列、栈、散列表、树、堆、图,然后每种数据结构又有细分,比如介绍树的时候有完全二叉树、满二叉树、二叉搜索树、AVL树、红黑树、字典树、哈夫曼树、线段树、笛卡儿树等。图的介绍中也有一些经典的算法,比如迪杰斯特拉算法、弗洛伊德算法、普里姆算法和克鲁斯卡尔算法等。 第2章:介绍了几种经典排序算法,以及它们的稳定性分析。 第3章:主要介绍了一些位运算和常见操作符,还有一些简单的操作和使用技巧,如有限状态机和相关示例讲解。 第4章:介绍了和树有关的知识,比如树的遍历方式,包括DFS遍历、Morris遍历,以及BFS遍历等。 第5章:分析了递归的原理和示例练习,可以把它看作是对一棵树的DFS遍历。 第6章:主要介绍了回溯算法的使用,然后得出回溯算法的使用模板,以及一些经典示例,还有一些重复问题和不符合条件的修剪分支。 第7章:主要介绍贪心算法的使用和存在的不足。 第8章:分别介绍了相向双指针、同向双指针和快慢双指针的使用技巧,还有滑动窗口的介绍和使用模板,以及大小可变窗口、固定窗口、只增不减窗口等。 第9章:主要介绍了BFS和DFS的使用模板和示例练习。 第10章:主要介绍了一维前缀和与二维前缀和的使用。 第11章:介绍动态规划和一些经典问题的讲解,如背包问题、组合与排列问题等。 第12章:通过三国人物的故事,生动形象地介绍了并查集的使用、并查集优化、并查集路径压缩以及合并优化等。 算 法 秘 籍第13章:介绍了其他一些经典算法,比如KMP算法、马拉车算法、算术表达式的运算、牛顿迭代法求平方根、Base64编码等。 本书的撰写与出版得益于机械工业出版社的鼎力支持,在此深表感谢,同时也感谢支持笔者的读者和朋友,还要感谢笔者的爱人杨兰一直以来的理解和支持。由于笔者水平有限,书中难免有不妥和疏漏之处,诚挚期盼读者朋友给予批评和斧正,笔者会把问题整理出来分享到我们的算法学习网站“wansuanfa.com”(“玩算法”的拼音),关于算法的知识非常多,书中不可能全部介绍,大家还可以继续在网站免费学习,本书的提高和改进离不开读者的帮助和时间的考验。大家也可以关注笔者,如果书中有不明白的地方可以随时沟通,如果有想了解的知识点也可以告诉笔者,笔者会通过视频直播和录播的方式为大家进行讲解。 |
| 書城介紹 | 合作申請 | 索要書目 | 新手入門 | 聯絡方式 | 幫助中心 | 找書說明 | 送貨方式 | 付款方式 | 香港用户 | 台灣用户 | 海外用户 |
| megBook.com.hk | |
| Copyright © 2013 - 2025 (香港)大書城有限公司 All Rights Reserved. | |