数据结构与算法
文章平均质量分 93
SigmaBull
这个作者很懒,什么都没留下…
展开
-
操作系统入门系列-MIT6.828(操作系统工程)学习笔记(六)---- 初窥操作系统启动流程(xv6启动)
本文通过讲解xv6的启动,对于理解操作系统从entry.S到shell的启动过程很有帮助原创 2024-06-10 19:31:15 · 1019 阅读 · 0 评论 -
一文学会动态规划
本文主要讲解了动态规划的理论知识,表明动态规划的使用场景,分析了它的具体逻辑,给出了理论操作具体步骤。动态规划是一种用来解决一类最优化问题的编程方案,往往可以将指数时间代价的问题在多项式时间代价某一级的最优化问题总是可以用比低级的同类子问题来描述,称为最优子结构一般情况下,解决第n级的子问题和解决第m级的子问题的时候,都会需要解决第k级的问题(n>k,m>k),称为重叠子问题如果解决该问题采用暴力求解(就是遍历所有情况得到最优解的方案),往往时间代价是指数级的。原创 2022-10-09 21:50:52 · 669 阅读 · 1 评论 -
《算法导论》学习(十九)----动态规划之最长公共子序列(C语言)
本文主要讲解了最长公共子序列的问题,对问题进行分析后给出了动态规划的方案,并且给出了详细的C语言代码。原创 2022-10-08 11:14:08 · 1904 阅读 · 0 评论 -
《算法导论》学习(十八)----动态规划之矩阵链乘(C语言)
本文主要讲解了动态规划中的矩阵链乘问题:给定一个矩阵链,得到它的最小代价计算次序。给出了动态规划方案的分析,并且给出了C语言实现。原创 2022-10-04 17:18:53 · 2781 阅读 · 2 评论 -
《算法导论》学习(十七)----动态规划之钢条切割(C语言)
本文主要讲解了钢条切割问题的解决方案,并且给出了C语言代码。其中涉及到了动态规划的思想,会在之后的文章中详细讲解文章不妥之处请各位读者包涵指正。原创 2022-10-01 21:01:52 · 2388 阅读 · 0 评论 -
《算法导论》学习(十六)----一文讲懂红黑树
本文将主要讲解红黑树,给出了红黑树复杂的插入删除操作的讲解原创 2022-09-28 19:42:01 · 1908 阅读 · 1 评论 -
《算法导论》学习(十五)----二叉搜索树(C语言)
本文主要讲解了二叉搜索树,并且用C语言是实现了它的所有基本操作函数,给出了C语言代码原创 2022-09-19 10:38:28 · 941 阅读 · 1 评论 -
《算法导论》学习(十四)----散列表(哈希表)(C语言)
本文主要讲解散列表(也可以称作哈希表)的相关内容,并且重点讲解了散列函数,以及用C语言是实现了链式散列表原创 2022-09-16 19:51:47 · 1179 阅读 · 0 评论 -
《算法导论》学习(十二)----链表(C语言)
文章主要讲解了链表的相关讲解,涉及了单链表,双向链表,循环链表的操作函数,并且用C语言进行了实现原创 2022-09-15 22:34:21 · 973 阅读 · 0 评论 -
《算法导论》学习(十一)----线性时间下,从输入种找到第i小的数(顺序统计量)(C语言)
顺序统计量,直接解决了从一组输入中找到第i小的元素的问题,给出了相应的C语言代码,同时该算法时间性能很突出,最坏情况是线性时间代价原创 2022-09-14 18:07:09 · 606 阅读 · 0 评论 -
《算法导论》学习(九)----为什么比较排序算法时间复杂度的下界是确定的?
本文介绍了决策树,主要是对于比较排序算法的一个总结性概述针对算法的时间性能,进行总体性偏向于本质的研究原创 2022-09-13 21:27:06 · 711 阅读 · 0 评论 -
《算法学习》学习(十)----计数排序,基数排序,桶排序(C语言)
本文主要讲解了三大线性时间排序:1.计数排序2.基数排序3.桶排序给出了它们的C语言代码和算法逻辑在原创 2022-09-13 19:15:44 · 1225 阅读 · 1 评论 -
《算法导论》学习(八)----快速排序(C语言)
快速排序的C语言,随机抽样的快速排序C语言原创 2022-09-10 12:34:03 · 660 阅读 · 0 评论 -
《算法导论》学习(七)----堆排序和优先队列(C语言)
本文主要讲解了堆的数据结构,堆排序,优先队列,并用C语言实现原创 2022-09-08 19:47:32 · 1043 阅读 · 0 评论 -
《算法导论》学习(六)----概率分析和随机算法
随机序列的生成算法雇佣问题概率分析随机算法原创 2022-09-02 13:39:26 · 1050 阅读 · 2 评论 -
《算法导论》学习(五)---- 分治策略(递归)的时间复杂度求解
求解递归式的时间复杂度是学习算法很重要的一部分,本文主要讲解了利用“主方法”来求解递归式的时间复杂度,并给出了全面的求解例子。原创 2022-08-31 12:25:51 · 1474 阅读 · 0 评论 -
《算法导论》学习(四)---- 矩阵乘法的Strassen(斯特拉森)算法
矩阵乘法可以采用分治的策略。这里提供了两个分治策略的解决n∗nn*nn∗n矩阵之间乘法的算法1.矩阵乘法的普通递归方法2.矩阵乘法的Strassen(斯特拉森)方法但是着两个方法的缺点是只能是两个n∗nn*nn∗n矩阵的乘法,同时n必须为2的幂之后也对这两个算法进行了时间复杂度上的分析。......原创 2022-08-29 12:37:23 · 4192 阅读 · 5 评论 -
《算法导论》学习(三)---- 最大和子数组问题的分治方法
本文讲解了最大和子数组问题,该问题所对应的算法应用范围广泛,在各种邻域都有应用。本文通过买股票的例子来讲解最大和子数组问题。给出了C语言代码和相关的编程细节供大家参考。并且阐释了算法背后的分治思想。分治方法显然要比暴力求解更加优秀。但是最大和子数组问题我们有一个线性时间的算法,不需要用到分治方法。...原创 2022-08-22 22:31:01 · 780 阅读 · 0 评论 -
《算法导论》学习(二)---- 算法时间规模与函数的增长
本章基于《算法导论》第三章的内容,主要讲解了对于算法运行时间的度量方法,渐进记号的定义讲解为什么用时间复杂度度量算法运行时间渐进记号的性质斯特林近似公式与阶乘有关的相关公式.........原创 2022-08-03 14:58:37 · 982 阅读 · 2 评论 -
《算法导论》学习(一)---- 插入排序和归并排序
归并排序与插入排序的C语言实现归并排序与插入排序的时间复杂度分析分治思想的讲解循环不变式的讲解《算法导论》第二章原创 2022-07-31 23:04:28 · 737 阅读 · 3 评论