耗时3年写了一本数据结构与算法pdf!开源了

news2025/1/18 6:55:46

前言

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

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

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

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

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

csdn专栏:数据结构与算法专栏

github地址:https://github.com/javasmall/bigsai-algorithm

在这里插入图片描述

主要内容

  1. 理论基础搭建

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

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

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

    • 跳表:了解跳表的增删改查原理和流程,拓宽对链表的认识。
    • 约瑟夫环问题:通过链表法、List模拟、公式法逐步深入这个问题。
  5. 树的深入学习

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

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

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

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

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

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

推荐资料

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

csdn专栏:数据结构与算法专栏

github地址:https://github.com/javasmall/bigsai-algorithm

持续更新中,欢迎star支持 !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1197209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL 聚合函数

前言 SQL中的聚合函数是对一组值执行计算,并返回单个值的函数。 常用的聚合函数有: 函数作用AVG()求平均值MAX()求最大值MIN()求最小值SUM()求和COUNT&…

Windows 中 kubectl 配置详细指南

目录 前言 什么是 Chocolatey与Minikube Chocolatey Minikube 安装 Minikube 安装 Chocolatey(如果尚未安装) Minikube 遇到的问题 通过获取集群状态的方法 kubectl 可选配置和插件 启用 shell 自动补全功能 安装 kubectl convert 插件 前言 …

C语言、c++史上最全最全爱心代码大全,彩色闪动、字符填充,附源码

第一种&#xff1a;红色爱心代码 直接上代码&#xff1a; #include<stdio.h> #include<Windows.h> int main() {system(" color 0c");//设计程序颜色 printf("遇见你是一件很开心的事情,爱你哟&#xff01;&#xff01;&#xff01;\n");//打…

【神经网络】GAN:生成对抗网络

GAN&#xff1a;生成对抗网络 Generator&#xff08;生成器&#xff09;概念 和传统的神经网络不同&#xff0c;Generator除了接受x的输入之外&#xff0c;还会接受一个简单的分布作为z进行输入&#xff0c;从而使得网络的输出也是一个复杂的分布 为什么输出需要时一个分布呢…

RocketMQ(一):基本概念和环境搭建

Spring源码系列文章 RocketMQ(一)&#xff1a;基本概念和环境搭建 目录 一、RocketMQ简介二、各个MQ产品的比较三、RocketMQ重要概念1、基本概念2、消息从发送到被消费的的流程3、生产和消费理解 四、RocketMQ安装1、下载RocketMQ2、解压并配置环境变量3、修改nameServer的运行…

JVM之jmap java内存映射工具

jmap java内存映射工具 1、jmap jdk安装后会自带一些小工具&#xff0c;jmap命令(Memory Map for Java)是其中之一。主要用于打印指定Java进程(或核 心文件、远程调试服务器)的共享对象内存映射或堆内存细节。 jmap命令可以获得运行中的jvm的堆的快照&#xff0c;从而可以离…

超强C语言跨年烟花代码,精美无比,附源码分步解析

现在大家是不是都觉得程序员不懂浪漫&#xff1f;那真的大错特错&#xff0c;今天就让你们看看什么是程序员的浪漫&#xff01; 我们今天就来写写《烟花》表白程序&#xff0c;不要惊讶&#xff0c;不要激动&#xff0c;学会了快去拿给心中的那个人看&#xff01;&#xff01;…

if,switch语句

1.if public class IfDemo1 {public static void main(String[] args) {// 目标&#xff1a;掌握if分支三种形式的用法和执行流程// 需求&#xff1a;测量用户体温&#xff0c;发现高于37度就报警double temperature 38.5;if (temperature > 37){System.out.println("…

Ruoyi框架开发项目(宝藏干货)

若依勾选框导出数据 效果图&#xff1a; package com.ruoyi.web.controller.school;import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.pag…

Linux使用gdb进行代码调试

1.debug版本 在编译阶段会加入某些调试信息; 调试信息是在编译的过程中加入到中间文件.o文件的;gcc -c main.c -g:生成包含调试信息的中间文件 gcc -o main main.o一步执行:gcc -o main main.c -g 2.release版本 发行版本,没有调试信息; gcc默认生成release版本; 3.gdb基础命…

关于session的不断变化问题

今天在帮同学解决一个小问题&#xff0c;差点阴沟翻船。 问题再现&#xff1a;他从github上拉了一个项目下来跑&#xff0c;结果发生跑不通问题出现在验证码一直不对。 我一看项目源码&#xff0c;验证码生成后存储再session中了&#xff0c;等用户发送请求验证的时候sessionI…

[SHCTF]web方向wp

[SHCTF]web方向wp [WEEK1]babyRCE题目源码wp [WEEK1]1zzphp题目源码wp [WEEK1]ez_serialize题目源码wp [WEEK1]登录就给flag题目wp [WEEK1]生成你的邀请函吧~题目源码wp [WEEK1]飞机大战题目wp [WEEK1]ezphp题目源码wp [WEEK2]no_wake_up题目源码wp [WEEK2]MD5的事就拜托了题目…

MES系统如何赋能制造企业实现4M防错追溯?

生产过程4M管理和MES系统的结合是现代制造业中关键的质量管理实践&#xff0c;它有助于提高生产效率、降低生产成本并保证产品质量。本文将深入探讨4M管理的概念&#xff0c;以及MES系统如何赋能制造企业实现4M防错追溯。 一、4M管理的概念 4M管理是指在制造过程中管理和控制四…

信息系统“好用”的标准探讨

数字化转型建设的关键不在建设信息系统。这是为了避免走信息化建设的老路——业务和信息化两张皮&#xff0c;寄希望信息系统解决业务问题。在数字化转型建设中&#xff0c;信息系统仍然是重要抓手和显性成果&#xff0c;是企业业务和数据的承载平台&#xff0c;也是IT厂商向客…

FTP、NFS以及SAMBA服务

一、FTP服务 1、Linux下ftp客户端管理工具 ftp、lftp都是Linux下ftp的客户端管理工具&#xff0c;但是需要独立安装 # yum install ftp lftp -y ☆ ftp工具 # ftp 10.1.1.10 Connected to 10.1.1.10 (10.1.1.10). 220 (vsFTPd 3.0.2) Name (10.1.1.10:root): 输入FTP的账号…

Windows系统安装2个版本得的MySQL

一、MySQL官网下载对应版本的zip文件 最新版本8.0.34下载链接&#xff1a;https://dev.mysql.com/downloads/mysql/ MySQL 5.7下载链接&#xff1a;https://downloads.mysql.com/archives/community/ 二、将下载到的压缩包解压到指定目录 使用解压工具将下载到的压缩包解…

keil仿真错误:*** error 65: access violation at 0x40021000 : no ‘write‘ permission

按下图打开&#xff1a; 进行修改&#xff1a; 我用的芯片是:STM32F103C8T6 开始仿真&#xff1a; 成功解决不能仿真问题

【Linux(0)】为什么要学习Linux,为什么互联网公司在招聘时,会提出要有Linux经验,及其使用;一些Linux常见指令

前言 &#x1f493;作者简介&#xff1a; 加油&#xff0c;旭杏&#xff0c;目前大二&#xff0c;正在学习C&#xff0c;数据结构等&#x1f440; &#x1f493;作者主页&#xff1a;加油&#xff0c;旭杏的主页&#x1f440; ⏩本文收录在&#xff1a;再识C进阶的专栏&#x1…

ROS 学习应用篇(三)服务Server学习之Server

话题Topic是订阅器与发布器节点之间的&#xff0c;而服务则是客户端&#xff08;Client&#xff09;和服务器&#xff08;Server&#xff09;间的&#xff0c;前者是异步的&#xff0c;后者是同步的。而且话题是单项的不需要服务器上线&#xff0c;而服务是双向的。在开启服务之…

python中的异常与模块

异常 为了能够让代码可以正常的运行下去&#xff0c;不会因为某个语句而让程序崩溃&#xff0c;所以我们就需要使用异常&#xff0c;异常的语法格式如下&#xff1a; try:可能出现异常的语句 except:出现异常之后的处理同时python也是支持捕获指定异常的 try:可能出现异常的…