-
算法小白的入门日记(十七)图的表示方法——邻接表和邻接矩阵
发布时间: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节点是黑色红色节点的两个子节点是黑色(即红色节点不能连续出现,