-
算法小白的入门日记(十八)图的遍历——深度优先算法和广度优先算法
发布时间:2022-01-20 10:39 图的遍历 图的遍历可以使用深度优先和广度优先遍历。 图的深度优先遍历做法和多叉树的深度优先遍历(前序遍历和后续遍历)一样,关键在于“回溯”,使用递归实现
-
算法小白的入门日记(十七)图的表示方法——邻接表和邻接矩阵
发布时间:2022-01-17 19:57图的定义 图是多个顶点(为和树区分,这里不叫节点,而叫顶点)通过多条边连接而成的网状结构,顶点之间呈多对多的关系(树节点之间则是呈一对多关系)。 树和图相比,树的节点之间是一对多的关系,并
-
算法小白的入门日记(十六)归并排序
发布时间:2022-01-15 16:12归并排序的思路是将一个长度为n的数组arr,分为arr[:n/2] 和 arr[n/2:]两组,对这两组数组分别再进行归并排序后,将这两组排好序的数组以拉链合并的方式保存在一个额外的长度为n的空数组中
-
算法小白的入门日记(十五)O(n^2)级别排序的极致——插入排序 和 希尔排序
发布时间:2022-01-15 11:07· 插入排序 插入排序的思路是创建一个初始指向arr[0]的指针p,将数组arr分为:左边的已排序区(arr[:p]) 和 右边的未排序区(arr[p:])。arr[p]是下一个要
-
算法小白的入门日记(十四)高性能统计结构——位图
发布时间:2021-12-03 13:40· 位图 位图是内存中连续的二进制位(bit)所组成的数据结构,该算法主要用于对大量整数做去重和查询操作。 位图的每一个位都有自己下标,从0开始,且位图下
-
算法小白的入门日记(十三)线性复杂度O(n)的排序——计数排序、基数排序和桶排序
发布时间:2021-12-03 10:25计数排序 计数排序是一种需要额外空间存储,复杂度为线性复杂度(O(n))的排序方式。 基本思路 非线性复杂度的排序算法的思路是交换,而计数排序无需交换。假如一个序
-
算法小白的入门日记(十二)使用二叉堆的排序——堆排序
发布时间:2021-12-02 11:22·堆排序堆排序顾名思义就是借助二叉堆进行排序。如果需要升序排就用最大堆做堆排序如果需要降序排就用最小堆做堆排序回顾一下最大二叉堆的特性,最大二叉堆的顶端元素最大,而且父节点一定大于子节点。那么如何使用
-
算法小白的入门日记(十一)经典排序——快速排序
发布时间:2021-12-02 10:29·快速排序(O(nlogn)) 快排的思路是选一个基准元素A,比A大的放A右边,比A小的放A左边。然后再按这个方式对A左右两边的子序列操作。该排序法使用了分治法。该算法的时间复杂度
-
算法小白的入门日记(十)最简单排序——冒泡排序 和 选择排序
发布时间:2021-12-01 15:06·排序 根据时间复杂度的不同,主流的排序算法可以分为时间复杂度为O(n*2)、O(nlogn)和线性复杂度3大类。 ·冒泡排序法(O(n*
-
算法小白的入门日记(九)学数据库索引心里不能没点——B树和B+树
发布时间:2021-11-29 00:11·B树和B+树的使用场景 在介绍B树的特征之前,要先了解B树的出现是为了实现数据库高效查找而设计出来的作为数据库索引的数据结构。B树和B+树的适用场景就是作为数据表的索引。
-
算法小白的入门日记(八)红黑树——另一种能自平衡的二叉查找树
发布时间:2021-11-28 10:17· 红黑树特性红黑树是自平衡二叉搜索树的一种,每个节点具有一个属性表示该节点是红色还是黑色,红黑树具有3个特性或者规则限制:根节点和nil节点是黑色红色节点的两个子节点是黑色(即红色节点不能连续出现,
-
算法小白的入门日记(七)AVL树——能自平衡的二叉查找树
发布时间:2021-11-27 10:52上一节在介绍BST时说道BST可能发生因插入顺序而产生的的退化为单链表的问题,这会使得BST的查询复杂度退化为O(n),为了解决这个问题,具有自平衡树就出现了。其中 AVL树 是最
-
算法小白的入门日记(六)BST——能高效查找的二叉树
发布时间:2021-11-24 20:06·二叉查找树(BST) 二叉查找树(又称二叉搜索树,二叉排序树)在二叉树的基础上增加了以下特点: 1、左子树所有节点小于根节点,右子树的所有节点大于根节点。 2、左右子
-
算法小白的入门日记(五) 二叉堆和优先队列——会自动排序的队列
发布时间:2021-11-19 20:30· 二叉堆是什么 二叉堆从逻辑上来说是一个具有自动排序功能的二叉树(最大堆是栈顶为最大值,降序;最小堆是升序);从物理上来说本质是一个数组。 二叉堆具有以
-
算法小白的入门日记(四) 二叉树的遍历
发布时间:2021-11-19 19:56树是一种非线性的数据结构,一棵树在逻辑上具有一个唯一的根节点,一个树节点在逻辑上具有多个指向其子节点的指针。 · 二叉树 二叉树就是每个节点只有两个分支的
-
算法小白的入门日记(三) Hashmap——高效查找Key-Value的无序结构
发布时间:2021-11-19 09:49· hashMap的数据结构 hashMap(散列表/哈希表)是一种提供键值映射关系数据结构,能做到高效查询key对应的value。它的底层结构是数组+链表,或者数组+树。
-
算法小白的入门日记(二) 栈和队列——能记得先后进出顺序的线性结构
发布时间:2021-11-18 20:19栈是一种具有先进后出的线性数据结构,常见操作是入栈(push)和出栈(pop)。可以使用链表或数组实现。最早进入的元素存放的位置叫作栈底(bottom),最后进入的元素存放的位置叫作栈顶(top)。
-
算法小白的入门日记(一) 数组和链表——数据结构的老祖宗
发布时间:2021-11-18 14:17我们可以简单的把内存看成是一系列连续的以字节为单位的存储空间组成的大存储空间,每一个字节为单位的小存储空间都有一个32位或64位的内存地址。 当需要存储多项数据时,我们可以使用两种基本的数据结构