![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 58
数据结构与算法相关知识
不爱吃奶昔(zsl0)
这个作者很懒,什么都没留下…
展开
-
2022-07-24 数据结构与算法-图
上面这种存储方式若是查找1顶点所指向的顶点是非常方便的,若是查找指向1顶点的顶点呢,是⾮常困难的;对应到图上,邻接表中,每个顶点的链表中,存储的就是这个顶点指向的顶点,逆邻接表中,每个顶点的链表中,存储的是指向这个顶点的顶点。你可以看下⾯这幅图,我们在机器1上存储顶点1,2,3的邻接表,在机器2上,存储顶点4,5的邻接表。当要查询顶点与顶点关系的时候,我们就利⽤同样的哈希算法,先定位顶点所在的机器,然后再在相应的机器上查找。微博允许单向关注,也就是说,⽤户A关注了⽤户B,但⽤户B可以不关注⽤户A。...原创 2022-07-24 18:47:57 · 135 阅读 · 0 评论 -
2022-07-24 数据结构与算法-堆和堆排序以及应用
维护一个根据执行时间的最小排序,判断根节点最小的任务时间是否达到,超过或者等于那么就响应定时器,并且从最小堆中移除;在堆的操作基础上,进行建堆(添加元素操作),构建一个最大或最小堆,再每次拿出最大或最小值(删除元素操作),从而实现堆排序,构建从大到小或从小到大的有序集合;对静态元素求最大K个元素,利用最小堆遍历静态元素,若当前元素大于最小堆根元素则替换根元素;删除最大或做小值时,也就是移除根节点,为了保持完美二叉树,将末尾元素移动到根节点,再向下进行比较找出最大值进行交换,直到实现第二个条件;...原创 2022-07-24 18:11:46 · 170 阅读 · 0 评论 -
2022-07-11 数据结构与算法:二叉树、红黑树、递归树课后题
二叉树每个节点包含存储元素的值和指向左子节点指针和指向右子节点指针的数据结构数据结构;这种数据结构像现实⽣活中的“树”;定义:这也是二叉树常被使用的主要原因,由于数组方便随机访问,但添加、删除元素需要扩容或者移动;链表方便添加删除元素,查找时需要遍历链表;结合两种数据结构得出折中的结果,也就是二叉树,在有序二叉树中查找元素时间复杂度O(logn),添加或删除需要平衡处理,也是平衡二叉树最复杂的逻辑,需要对节点进行左旋或右旋(根据实际情况分析);这里贴出对二叉树的前中后序遍历(数组版)红黑树红黑树是平衡二原创 2022-07-11 22:49:01 · 127 阅读 · 0 评论 -
2022-07-05 数据结构与算法-散列表、哈希算法
散列表⽤的是数组⽀持按照下标随机访问数据的特性,所以散列表其 实就是数组的⼀种扩展,由数组演化⽽来。可以说,如果没有数组,就没有散列表。Hash(key)数据量比较小、装载因子小的时候,适合采用开放定址法基于链表的散列冲突处理⽅法⽐较适合存储⼤对 象、⼤数据量的散列表,⽽且,⽐起开放寻址法,它更加灵活,⽀持 更多的优化策略,⽐如⽤红⿊树代替链表需要的操作:解决方案:需要的操作:解决方案:LinkedHashMap是通过双向链表和 散列表这两种数据结构组合实现的。LinkedHashMap中 的“Linked原创 2022-07-05 23:15:55 · 148 阅读 · 0 评论 -
2022-07-03 数据结构与算法-二分查找、跳表
二分查找也叫折半查找,针对有序数据,依赖数组结构来存储元素,时间复杂度O(n);不适合数据量太大,对于1G的元素那么就需要1G的连续存储空间;常见变形问题(存在多个相同的值):需要维护多级索引,通过索引达到快速定位到元素位置;保证元素有序, 解决链表查询问题;时间复杂度O(n*logn),空间复杂度O(n)。主要解决了:范围查询,支持查询给定区间范围...原创 2022-07-03 10:09:45 · 100 阅读 · 0 评论 -
2022-06-29 数据结构与算法-桶排序、计数排序、基数排序
针对在固定范围的内的数据计数排序(Counting Sort)针对种类少的数据,如年龄[0, 120]、高考成绩[0, 750]基数排序(Radix Sort)针对数据位数的,如手机号、单词原创 2022-06-29 23:11:50 · 138 阅读 · 0 评论 -
2022-06-29 数据结构与算法-归并排序、快速排序
将每个元素两两合并,进行内部排序,逐渐合并成一个集合,达到有序快速排序将一个集合分成整体有序但两个无序集合,再对无序集合进行排序成两个集合,从而达成有序集合关系都是采用分治的思想,归并是自底向上逐渐有序,快排是自顶向下逐渐有序......原创 2022-06-29 22:04:05 · 172 阅读 · 0 评论 -
2022-06-27 数据结构与算法-递归、冒泡、插入、选择排序
需要满足的三个条件:注意事项如何将递归代码改写为非递归代码:递归是倒着推出答案,利用例如f(n)=f(n-1) + f(n-2)与子问题的关系加上终止条件,得出的代码;因此只需要正从终止条件求出问题答案即可每边都需要交换比较结果的元素插入排序(Insert Sort)*常用每次插入,选择合适的位置,即插入过程中排序,后面的元素向后移动选择排序(Select Sort)每次选择最大或最小元素进行交换,只交换一次,但不是稳定的排序......原创 2022-06-27 22:46:02 · 151 阅读 · 0 评论 -
2022-06-26 数据结构-数组、链表、栈、队列
一段连续存储的空间,可以通过下标定位到对应位置的线性结构由多个节点组成,每个节点有一或两个指针指向其它节点,构成的线性结构。种类:双向链表环链表(单或双向)正确写出链表代码六个技巧:LIFO后进先出,一种操作受限的线性表数据结构种类链式栈:用链表实现队列FIFO先进先出,也是一种操作受限的线性表数据结构种类 --> 存储形式链式队列(单、双、环)扩展......原创 2022-06-26 20:41:05 · 180 阅读 · 0 评论