随笔分类 - 算法与数据结构
摘要:二叉树的相关概念 1、基本概念 二叉树每个节点最多有两个子树的结构,通常被称为“左子树”和“右子树”。 2、满二叉树 每个节点必须有两个子树,并且叶节点在同一层。 3、完全二叉树 节点的标记就是节点的值,意思就是节点的值是连续的,从左到右不能断裂,必须连续; 二叉树的相关遍历 1、前序遍历:根节点-
阅读全文
摘要:队列 一、什么是队列 图解 解释:我们的队列就像排队加油一样,谁在前面谁就先加油,这就满足队列的概念先进先出的。 概念:值允许在一端进行插入操作,而在另一端进行删除操作的线性表。一般的实现方法是通过链式表进行实现,所以也可叫链队列。 场景:我们的输入缓冲区接受键盘的输入就是按队列的形式输入和输出,大
阅读全文
摘要:时间复杂度 常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3), k次方阶O(nk),指数阶O(2n),随着问题规模不断扩大,上述时间复杂度不断地增大,算法执行效率越来越低。 一、常数阶(O(1)) 二、对数阶
阅读全文
摘要:工作原理 一、流程图 二、原理 第一步:我们选取目标数和基准值 第二步:判断当前要查找的值是否是基准值,是就直接返回下标;不是在判断是不是基准值的左边或右边,如果不存在,数组继续选取,直到找到为止返回下标。 图解 注意: 1、二分查找法一定是排好序的,才能使用二分查找; 源代码 一、递归的方式实现
阅读全文
摘要:归并排序 一、工作原理 1、描述 归并排序实际上是将一个数组分成不能再分为止,然后两两对比,将小的放在前面,然后按照从小到达的分裂顺序,往上走,最后合并两个数组即可。 2、图解 二、源代码 注意: 1、两个数组比较最后肯定剩下元素,不是A就是B,这是要把数组里面剩的追加到临时数组的后面。 三、性能分
阅读全文
摘要:简单选择排序 一、工作原理 图解 我们可以从图上可以看出,我们先循环找出最小的元素。我们的第二个循环是找出最小的元素,第一个循环是负责交换值的,第一趟排序外层循环的指针指向数组的第一个,这个时候我们找出数组的最小值,和外层指针交换数值,就把最小的放在第一个,后面的同理。 注意: 1、重点在于先循环找
阅读全文
摘要:直接插入排序 一、工作原理 第一步:我们选取目标数组 第二步:我们将5和2进行对比,我们的后一个元素要小于前一个元素,这样才能进行指针的移动,也就是$arr[$i] < $arr[$i - 1]的时候,这个时候就是将2放在临时变量也就是哨兵,然后对这个数组进行指针的移动; 这个时候我们就完成了第一轮
阅读全文
摘要:冒泡排序 一、冒泡排序的原理 注意: 1、其实原理就是相邻的两两比较,我们一从小到大为列,谁小谁就在前面; 2、比较完了之后互相要交换值,这个时候通过第三个变量进行交换; 3、比如我们现在数组的大小为5,那么我们就要进行4轮的比较,上面粘贴的实例就是大小为4,经过3轮比较。 二、源代码 三、算法优化
阅读全文

浙公网安备 33010602011771号