
《数据结构与算法》系列
文章平均质量分 85
时间空间复杂度,线性非线性存储,常见算法总结
一只IT攻城狮
一个喜欢诗和远方的程序媛
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
常见排序算法整理
常见的内部排序算法有:`插入排序`、`希尔排序`、`选择排序`、`冒泡排序`、`归并排序`、`快速排序`、`堆排序`、`基数排序`等。原地排序原地排序算法,就是特指空间复杂度是 O(1) 的排序算法。稳定性。这个概念是说,如果待排序的序列中存在值相等的元素,经过排序之后,相等元素之间原有的先后顺序不变。接下来讨论、理解和比较这些常用的排序算法都离不开这两点。原创 2021-04-01 22:42:59 · 349 阅读 · 0 评论 -
一文搞懂常见限流算法:计数器、滑动窗口、漏桶、令牌桶
在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流。限流在很多场景中用来限制并发和请求量,比如说秒杀抢购,保护自身系统和下游系统不被巨型流量冲垮等。你要开发一个限流的框架,那么必不可少的就是要选择一种合适的限流算法。限流算法很多,常见的有几类分别是:计数器算法、滑动窗口算法、漏桶算法、令牌桶算法,具体视业务场景,统计的精准度,限流维度而定。原创 2023-08-29 11:07:47 · 924 阅读 · 0 评论 -
时间复杂度与空间复杂度-o(1)、o(n)、o(logn)、o(nlogn)、斐波那契
从广义上讲:数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。数据结构和算法是相辅相成的。他们解决的是如何更省、更快地存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就是。原创 2020-11-17 16:11:30 · 5717 阅读 · 0 评论 -
“数组、堆栈”与“链表、队列”的区别是什么?
“数组、堆栈”与“链表、队列”的区别是什么?原创 2020-11-17 19:14:07 · 1822 阅读 · 0 评论 -
常见算法:二分查找、跳表、散列表、哈希函数详解
一、二分查找二分查找(Binary Search)算法,也叫折半查找算法。O(logn) 非常高效的查找算法。在不存在重复元素的有序数组中,查找值等于给定值的元素。eg: public int bsearch(int[] a, int n, int value) {int low = 0;int high = n - 1;while (low <= high) {int mid = (low + high) / 2;if (a[mid] == value) {return mid;原创 2020-11-17 20:54:52 · 956 阅读 · 0 评论 -
二叉树、二叉查找树与散列表区别、红黑树
什么是二叉树和完全二叉树?二叉树的几种遍历方法你会了吗?红黑树特点是什么?为什么引入了红黑树?散列表、红黑树、跳表都用在哪些场景?原创 2020-11-18 16:12:48 · 860 阅读 · 1 评论 -
数据结构-堆(Heap)、堆排序
然后比较1和7(7和2选择较大的放到堆顶,所以此处选择1和7交换),继续堆化,1和5交换,直到该节点没有任何子节点或者它比两个子节点都要大,即图中灰色状态满足堆,结束。:原因是对堆顶节点进行堆化,会依次访问数组下标是 0,1,3 的元素,而不是像快速排序那样,局部顺序访问,所以,这样对 CPU 缓存是不友好的。建堆过程的时间复杂度是 O(n),排序过程的时间复杂度是 O(nlogn),所以,堆排序整体的时间复杂度是 O(nlogn)。,因此,堆的删除、插入元素时间复杂度为 O(logn)。原创 2020-11-18 12:34:40 · 1020 阅读 · 0 评论 -
数据结构-图的理解(以及图的存储与遍历)
1、图的基本概念树中的元素我们称为节点,图中的元素我们就叫做顶点。一个图就是一些顶点的集合,顶点有时也称为节点或者交点,这些顶点通过一系列边连接,跟顶点相连接的边的条数叫做度。引入边的“方向”,就是有向图,在有向图中,我们把度分为入度(In-degree)和出度(Out-degree)。例顶点2的入度为2,出度为2。每条边都有一个权重(weight)的图就是带权图。而这种带权的图被称为网。此图为非连通图,若顶点0和1有边连接,则为连通图。树和链表也属于图。常见的我们的qq,微博互关,微信好友等都是图的应原创 2020-11-11 22:32:47 · 1081 阅读 · 0 评论 -
常见的加密解密算法
最常用的加解密算法有什么?原创 2021-03-18 12:37:45 · 7200 阅读 · 0 评论 -
list转成部门组织机构树
一二级部门混合在list中,如何变成组织机构数DeptUserInfoBO.java/** * 部门成员信息表 */@datapublic class DeptUserInfoBO{ private Long id; private Integer pageNo = 1; private Integer pageSize = 10; private Integer groupType;//机构登记 一级机构1,二级机构2 private String gr原创 2022-03-29 11:49:19 · 730 阅读 · 0 评论 -
哈夫曼编码的理解(Huffman Coding)
1、哈夫曼编码(Huffman Coding),又称霍夫曼编码,是Huffman于1952年提出的一种编码方式,可变字长编码(VLC)的一种。霍夫曼编码不仅会考察文本中有多少个不同字符,还会考察每个字符出现的频率,根据频率的不同,选择不同长度的编码。霍夫曼编码试图用这种不等长的编码方法,来进一步增加压缩的效率,广泛用于数据压缩中,其压缩率通常在 20%~90% 之间。有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。2、举例说明:假设我有一个包含 1000 个字符的文件,每个字符原创 2020-11-09 17:37:04 · 2968 阅读 · 1 评论