(大集合)数据结构与算法简述和CS综合 数据结构与算法简述和CS综合 数据结构与算法简述和CS综述整理。本文非基础的教程,本文会列出大量学习和参考网站。老惯例,一个文章是一个集大成(本文借助了语音输入(PC 版 讯飞输入法)由此加速码字,但仍保持简洁的文风)。 老规矩,知乎编辑器排版不好,推荐去 Github 上看原文,coding-style-and-more/数据结构与算法简述和CS综合.md at main · Staok/coding-style-and-more (github.com)。 数据结构 + 算法 = 程序。数据结构:现实问题的符合计算机存储的建模;算法:解决现实问题的步骤(符合有穷性,确定性,可行性等)。 文末四个附录为 Github 上或其它地方的有极大学习价值的教程或库:附:算法代码库。附:CS 综合学习类。附:嵌入式 综合学习类。附:算法刷题总结。 该部分涉及十几个 Github 仓库,鉴于挨个下载很麻烦,这里我全部下载并整理好了(四部分仓库 + 硬件领域面经集合 1.42 GB 侵删): 链接:https://sigusoft.com/s/1-A_wA3YP4666tge2llxqEg 提取码:XHYN –来自百度网盘超级会员V4的分享 IT 学习路线 C语言基础 →C语言三剑客:《C和指针》、《C陷阱与缺陷》和《C专家编程》,经典永流传 →数据结构与算法(线性表/树/图/哈希 + 排序/搜索/规划等等等 按需学) →计算机专业科学看的《计算机组成原理》/《计算机体系结构》,《计算机操作系统》/《现代操作系统》/《深入理解计算机系统》,《编译原理》,《深入分析GCC》,网络协议如《计算机网络》、《TCP-IP详解卷一/卷二/卷三》等 →可选 《CPU自制入门》 →走向:嵌入式 Linux 方向、FPGA / 芯片设计方向、具体某算法方向等等。 更多学习路线可详细参考 rd2coding/Road2Coding: 全栈程序员社区 (github.com) 的总结,比较全面了。 相关坚韧大厚书 没给出链接的 网搜名字即可。哪本《数据结构与算法》最好? – 知乎 (zhihu.com) 该回答列举了一些不错的数据结构与算法方面的书籍。《算法导论》(经典)是计算机学科的算法入门书。《计算机体系结构》(经典),《计算机操作系统》/《现代操作系统》/《深入理解计算机系统》。《编码的奥秘》,相关介绍/推荐 想练习《编码的奥秘》里面的知识,有什么软件有帮助? – 知乎 (zhihu.com)。《编译原理》(经典),《深入分析GCC》。网络协议如《计算机网络》、《TCP-IP详解卷一/卷二/卷三》, 想深入了解 HTTP 协议,有哪些值得推荐的书籍? – 知乎 (zhihu.com)。嵌入式应用相关:《GNU Make》,《Debugging with GDB》,《Linux 高级程序开发》,《POSIX 多线程程序设计》,《嵌入式Linux基础教程》,《嵌入式Linxu应用开发完全手册》,《嵌入式Linxu应用程序开发详解》。嵌入式底层相关:内核相关:《深入理解Linux内核》,《Linux内核源代码情景分析》,《Linux内核设计与实现》;驱动相关:《Linux设备驱动程序》,《Linux设备驱动开发详解》,《Linux驱动开发入门与实践》。 相关有趣/耐看书或视频 《算法新解》开源书。《啊哈!算法》。图解系统 小林。图解网络 小林。趣谈网络协议。手绘图解HTTP。30张图解HTTP常见面试题。TCP/IP 教程 | 菜鸟教程 (runoob.com)。HTTP 教程 | 菜鸟教程 (runoob.com)。《嵌入式C语言的自我修养》 从沙子讲到CPU,从编辑器讲到编译器,从高阶C语言讲到内存管理,从GNU讲到多任务编程。 (完结)(小甲鱼)数据结构和算法_ 哔哩哔哩 _bilibili。 国嵌唐老师主讲【数据结构与算法C语言】(非常犀利)_ 哔哩哔哩 _bilibili 讲的慢。 时间、空间复杂度 时间复杂度表示一个算法内执行语句的数量在最坏的情况下随着循环次数 n 的增加而增长的数量级。一个算法内语句的使用次数(频度)表示为 f(n),n 为算法内循环语句的循环数,n 的变化直接改变 整个算法的语句使用次数;时间复杂度 O(g(n)) 的定义为,对于一个算法,当且仅当存在正整数 c 和 n0,使得 f(n) ≤ cg(n) 对于所有 n ≥ n0 成立,则该算法的渐进时间复杂度为 f(n) = O(g(n)),g(n) 为 n 的函数。 各个时间复杂度的语句频度的增长速度比较:O(log_2(n)) < O(n) < O(n*log_2(n)) < O(n^2) < O(n^3) < O(2^n) < O(n!),前三个很好,最后两个不可接受,剩余的强差人意。 程序的执行时间不仅依赖于问题规模,还可能随着数据的状态不同而变化,即其时间复杂度会变化,一般评价算法时候取最坏的情况的时间复杂度。 空间复杂度大同小异。 数据结构简述 一个软件项目,数据结构设计的好,后面进行功能实现时候的调用、修改和查询会特别方便,可以达到事半功倍的效果。 基本概念 数据结构几大类线性表:顺序(数组)、链式(链表(单链表、双向链表、循环链表(单向、双向),静态链表(借助数组实现)))、特殊(栈(FILO)、队列(FIFO))。树:二叉树、红黑树等。图:无向图、有向图等。 按照关系划分 按照逻辑关系(素的连接关系): 集合,线性(数组、栈、队列、链表等),树状(一对多),图状(多对多)。 按照存储关系: 顺序存储:如数组,要提前申请空间(静态分配(编译时进行)或动态分配(malloc & free))。优点:物理位置连续而紧凑,可 随机 / 直接 存取;缺点:会产生内存碎片,增、删改动时前后要跟着变(需要移动大量素)。 链式存储:如链表,要提前申请空间(动态分配(malloc & free))。优点:链式、离散、节点化,空间可动态分配,改动方便(改节点的指向);缺点:空间占用大,查找不便(需要遍历整个链表)。 索引存储:“索引-数据” 的结构形式。 散列存储:暂略。 数据运算每个基本数据结构要实现的基本操作:增(插入)、删(删除)、改(更新)、查(检索),判(判空,判满)、排(排序)、复(复位)。更复杂的操作可用以上基本操作实现。 操作的时间复杂度 具体概念在 “C & MCU编写规范和其他” 一文的 “时间、空间复杂度” 一节有提到。(数据结构)十分钟搞定时间复杂度(算法的时间复杂度) – 简书 (sigusoft.com)。一套图 搞懂“时间复杂度”_ 12 26 25 的博客-CSDN博客 _时间复杂度。查找:顺序存储结构 O(1),单链表 O(n)。插入和删除:顺序存储结构 O(n),单链表 O(1)。 典型数据结构列举 栈/队列/链表 描述略。 一些基本的简单实现参考文件夹里面。线性表详解:数据结构线性表10分钟入门 (biancheng.net)。栈(Stack)和队列(Queue)详解 (biancheng.net)。 树 以下为树的基本概念(定义、基本操作、性质、存储结构等)、二叉树(定义、基本操作、存储、遍历等)、平衡二叉树、红黑树等。 引自:树及二叉树的基本概念_青萍之末的博客-CSDN博客。树是由一个或一个以上的节点(node)组成,存在一个特殊节点称为树根(root),它是n(n>=0)个节点的有限集。n=0时称为空树。n>0时,有限集的素构成一个具有层次感的数据结构。
















2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/68131.html