数据结构
weixin_45615380
这个作者很懒,什么都没留下…
展开
-
2020-12-12
跳表一、什么是跳表?二、跳表的时间复杂度?1.计算跳表的高度2.计算跳表的时间复杂度三、高效的动态插入和删除?四、跳表索引动态更新?对于一个单链表来讲,即便链表中存储的数据是有序的,如果我们要想在其中查找某个数据,也只能从头到尾遍历链表。这样查找效率就会很低,时间复杂度会很高,是 O(n)。为了提高效率,我们建立索引。每两个结点提取一个结点到上一级,我们把抽出来的那一级叫做索引或索引层。你可以看我画的图。图中的 down 表示 down 指针,指向下一级结点。上述的数据量不大,所以即便加了两级索引原创 2020-12-12 15:05:03 · 153 阅读 · 0 评论 -
2020-12-01
力扣打卡题(二分法)力扣34题解题思路:1、使用二分法模板直接套用二分法标准模板public static int BinSearch(int[] nums, int target){ if(nums.length< 0) return -1; int right = nums.length; int left = 0; while(left <= right){ int mid = (right - left)/2 + left;//防止越界 if(nums[mi原创 2020-12-01 17:22:59 · 130 阅读 · 2 评论 -
2020-11-28
拓扑排序一、算法分析二、kanh算法三、DFS算法一、算法分析这个概念很好理解,我们先来看一个生活中的拓扑排序的例子。我们在穿衣服的时候都有一定的顺序,我们可以把这种顺序想成,衣服与衣服之间有一定的依赖关系。比如说,你必须先穿袜子才能穿鞋,先穿内裤才能穿秋裤。假设我们现在有八件衣服要穿,它们之间的两两依赖关系我们已经很清楚了,那如何安排一个穿衣序列,能够满足所有的两两之间的依赖关系?如果 a 先于 b 执行,也就是说 b 依赖于 a,那么就在顶点 a 和顶点 b 之间,构建一条从 a 指向 b 的边原创 2020-11-28 14:47:40 · 434 阅读 · 0 评论 -
2020-11-21
回溯算法一、八皇后问题二、0-1背包问题三、正则表达式问题回溯处理思想,有点类似枚举搜索。我们枚举所有的解,找到满足期望的解。为了有规律地枚举所有可能的解,避免遗漏和重复,我们把问题求解的过程分为多个阶段。每个阶段,我们都会面对一个岔路口,我们先随意选一条路走,当发现这条路走不通的时候(不符合期望的解),就回退到上一个岔路口,另选一种走法继续走。理论的东西还是过于抽象,老规矩,我还是举例说明一下。我举一个经典的回溯例子,我想你可能已经猜到了,那就是八皇后问题。一、八皇后问题我们有一个 8x8 的棋盘,原创 2020-11-21 15:12:43 · 54 阅读 · 0 评论 -
2020-11-13
数据结构之图的搜索算法图的表示广度优先算法(BFS)深度优先算法(DFS)图的表示图代表多对多的关系。图中的元素我们就叫做顶点(vertex)。从我画的图中可以看出来,图中的一个顶点可以与任意其他顶点建立连接关系。我们把这种建立的关系叫做边(edge)。图最直观的一种存储方法就是,邻接矩阵邻接矩阵的底层依赖一个二维数组。对于无向图来说,如果顶点 i 与顶点 j 之间有边,我们就将 A[i][j]和 A[j][i]标记为 1;对于有向图来说,如果顶点 i 到顶点 j 之间,有一条箭头从顶点 i 指向原创 2020-11-13 18:52:33 · 75 阅读 · 0 评论 -
2020-11-08
数据结构之堆排序堆一、往堆中插入一个元素二、堆中删除一个元素三、实现堆排序一、建堆二、排序堆堆是一种特殊的二叉树。满足下面两个条件就是一个堆:1、堆是一个完全二叉树(完全二叉树要求,除了最后一层,其他层的节点个数都是满的,最后一层的节点都靠左排列。)2、堆中每个节点的值都必须大于等于(或小于等于)其子数的每一个节点的值。(大于的称为大顶堆,小于的称为小顶堆。)上图1,2是大顶堆,3是小顶堆,4不是堆。一、往堆中插入一个元素往堆中插入一个元素,也必须满足堆的两个条件。完全二叉树比较适合用数组存原创 2020-11-08 19:08:06 · 126 阅读 · 0 评论