历史三年,写了一本数据结构与算法pdf,开源了!

前言

大家好,我是bigsai,很早就在写博客,将文章整理成了一个pdf,并且开源到github上!

自己写东西断断续续也不少时间了,也写了不少东西(虽然是偏向小白),这个其实花费的时间还是比较多的,这次的话主要将数据结构与算法中一些文章整理出来,初步整理成一版pdf,先分享给大家。

因为在整理pdf方面没啥经验,目前还是md直接导出的pdf的,看了下有些部分代码太长太占页面,有些部分图片太长也很占地方,有部分文章还尝试不同风格显得不那么条理,有些地方页面突然分割也很影响视觉体验......

虽然有很多缺点和问题,这些地方后面也在想办法考虑一点点优化,也欢迎大伙提出宝贵的意见!当然这个仓库也是开源的,有兴趣一起维护的可以维护。

更新会同步到Github仓库中,也会告知大家。近期会将以前写的其他数据结构算法部分(未优化)优化更新上去。

github地址github.com/javasmall/b...

主要内容

  1. 理论基础搭建

    • 绪论基础知识:理解数据结构的相关概念,熟悉时间复杂度和空间复杂度。
    • 写给小白硬核递归:通过解决经典问题,深入理解递归,掌握记忆化递归的妙用。
  2. 线性结构的掌握

    • 图解线性表:手写顺序表和链表,理解带头结点和不带头结点链表的实现区别。
    • 图解双链表:手写双链表,考虑好节点直接联系,特别是考研重点。
  3. 栈与队列的熟练使用

    • :掌握后进先出规则,实现上用顺序表和链表考虑区别。
    • 队列:理解先进先出规则,实现上使用循环数组和链表分别实现。
  4. 更高级的线性结构

    • 跳表:了解跳表的增删改查原理和流程,拓宽对链表的认识。

    • 约瑟夫环问题:通过链表法、List模拟、公式法逐步深入这个问题。

  5. 树的深入学习

    • 二叉树层序遍历:学会使用队列进行层序遍历,解决二叉树之字形遍历。
    • 二叉树前中后遍历:熟练掌握非递归方式遍历,建立对树结构的全面理解。
    • 二叉搜索(查找)树:学会查找方式和删除节点逻辑。
    • 二叉平衡(AVL)树:了解平衡二叉树的旋转方式,以及不同平衡方式的应用。
  6. 其他重要数据结构

    • 哈夫曼树:理解哈夫曼树的weight计算方式和哈夫曼编码。
    • 字典(Trie)树:手写字典树,熟悉其应用场景和优势。
    • 优先队列:了解借助堆的运行原理。
    • 并查集(不相交集合) :手写并查集,理解路径压缩的优势。
  7. 问题解决方法的学习

    • 回溯算法:通过解经典问题如八皇后问题,深刻理解回溯思想。
    • 分治算法:学会先分后合并,解决经典问题如二分搜索、快排、归并排序、最近点对等。
    • 搜索算法:深度优先搜索、广度优先搜索,解决问题如蓝桥杯,提高解决实际问题的能力。
    • 拓扑排序:理解图论算法,得到一个前后的顺序序列。
    • Dijkstra算法:了解图论单源最短路径,队列+贪心实现。
    • Floyd算法:了解图论多源最短路径,代码简短但需要深刻理解。
    • 最小生成树算法:Prim和Kruskal,了解不同贪心策略的应用。
  8. 位运算与数论算法

    • 位运算:介绍几种位运算,解决大部分经典位运算问题。
    • 求素数:掌握素数筛和欧拉筛的应用。
    • 快速幂:数论算法,掌握非递归、递归写法,了解矩阵快速幂。
  9. 大数运算

    • 大数加减乘除:手写大数运算,了解大数除法的思想。
  1. 十大排序算法

    • 冒泡排序、快速排序:了解交换类排序的原理和应用。
    • 插入排序、希尔排序:理解插入类排序的方法和优势。
    • 归并排序:学会归并类排序的实现。
    • 简单选择排序、堆排序:掌握选择类排序的原理。
    • 桶排序、计数排序、基数排序:了解桶类排序的应用场景和实现。
    • 双轴快排:优化快排的方法,深入理解排序算法的差异。

推荐资料

  1. 书籍

    • 《算法导论》 :经典之作,系统全面地介绍了算法和数据结构。
    • 《数据结构与算法分析》 :作者Mark Allen Weiss,深入浅出地讲解数据结构与算法。
    • 《剑指Offer》 :针对面试算法题的详尽解析,适合入门和面试准备。
  2. 在线教程

    • LeetCode:刷题神器,

github地址github.com/javasmall/b...

持续更新中,现在在优化的内容也会一章一章在掘金分享,欢迎倔友star支持加点动力 !

相关推荐
商bol45几秒前
习题与正则表达式
数据结构·c++·算法
spe14372 分钟前
【学习自用】配置文件中的配置项
java·spring boot·学习·mybatis
martian66512 分钟前
Spring Boot开发三板斧:高效构建企业级应用的核心技法
java·开发语言
码农周13 分钟前
springboot Filter实现请求响应全链路拦截!完整日志监控方案
java·spring boot·后端
firepation17 分钟前
基于 springboot 的在线考试系统
java·spring boot·mysql·源码·课程设计
cherry523026 分钟前
【Java设计模式】第1章 课程导学
java·开发语言·设计模式
努力的搬砖人.26 分钟前
nginx如何实现负载均衡?
java·经验分享·后端·nginx
刘大猫.30 分钟前
遍历集合list工具
java·list·遍历list·遍历集合·集合排序·遍历对象返回匹配·遍历集合返回第一个匹配值
wuxiguala37 分钟前
【java图形化界面编程】
java·开发语言·python
东方雴翾40 分钟前
CSS语言的游戏AI
开发语言·后端·golang