
数据结构
文章平均质量分 62
数据结构
程序员·小李
不知道要干什么的时候,停一停,想一想;知道想要什么的时候,努努力,拼一拼。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
大话数据结构004 栈
栈类似于弹夹,后放进去的先出来(LIFO),只有一个出入口。栈顶就是数据操作的出入口部位,栈底就是数据的最底部。栈顶指针:指向栈顶元素的指针。空栈指针位置为-1栈的理论模型栈的顺序存储结构通过栈顶指针的位置辨别当前栈的元素个数进栈由于栈顶指针与栈顶的元素位置一致,需要先将栈顶指针位置+1,然后将插入的元素...原创 2019-05-19 11:45:57 · 299 阅读 · 0 评论 -
大话数据结构009 哈夫曼树
问题引入:我们有一个根据分数划分类型的问题,如果按部就班的这么干,在某些情况下会出出现效率问题。超过70分的有80%,这些人需要做三次没用的判断。然而改进后,我们可以提高效率:从某个节点到另外一个节点的连线树就是路径长度,如果带有权值,那就是权值与路径长度的乘积。二叉树a的路径总长度:1+1+2+2+3+3+4+4 = 20二叉树b的路径总...原创 2019-05-19 19:30:27 · 330 阅读 · 0 评论 -
大话数据结构002 时间复杂度
常见的时间复杂度的计算1. 常数阶次执行次数是3,复杂度是O(1)2. 线性阶次时间复杂度O(n)3. 对数阶次时间复杂度O(LogN)4. 平方阶次时间复杂度O(n^2)时间复杂度O(n^2)常见时间复杂度汇总时间长度消耗排序:...原创 2019-05-17 21:33:24 · 1381 阅读 · 0 评论 -
大话数据结构006 串
串有零到多个字符组成的有限长的序列,又称为字符串。主串与子串:over属于lover的子串,end属于friend的子串,子串是主串的一部分。字符串比较相等:对应位置上的字符完全一致。大小比较:1. "hap"与"happy" 前者小(前者较短,并且与后者前三个字符完全一致)2. "happen"与"happy" 前者小(前四个字符完全一致,...原创 2019-05-19 16:39:44 · 254 阅读 · 0 评论 -
大话数据结构005 队列
队列队列其实就是常见的排队数据结构。一端插入,另一端删除,属于先入先出(FIFO)。队列的数据模型队列的入队在尾部插入元素即可队列的出队在头部删除元素,其他元素前移即可改进型队列1使用队头指针和队尾指针进行数据操作。当队列为空的时候,队头指针与队尾指针均指向第一个元素,当队列不为空的时...原创 2019-05-19 12:05:16 · 267 阅读 · 0 评论 -
大话数据结构011 顺序查找与有序查找
查找根据给定的值,查询指定的数据。顺序查找(复杂度(O(N)))从线性表的第一个元素开始查找,能够和给定的值进行匹配的时候,就可以返回这个数据,直到最后一个元素。如果所有元素都不匹配的话,就是找不到。int Search(int[] arr, int target){ if(arr == null || arr.length <= 0) ...原创 2019-07-19 15:21:00 · 345 阅读 · 0 评论 -
大话数据结构012 线性索引查找
索引,在数据库管理和存储中经常使用。便于管理数据。稠密索引对于每一条记录都有一条对应的记录。索引是有序存储的,数据记录是无序存储的,但是对应的索引中存储着数据的存储位置。我们可以采用折半,斐波那契等各种方式优化查找。但是对于大数据量,这样就会造成内存的频繁访问了。分块索引对于大型数据集,我们为其分块处理。块内无序:每一块内部存储的信息是...原创 2019-07-19 16:03:43 · 137 阅读 · 0 评论 -
大话数据结构001 绪论
数据:能够输入到计算机被计算机识别, 并且能够被计算机处理的符号集合.数据元素:构成数据集合的单个元素就是数据元素.在数据表中就是一行记录.数据项:数据项就是数据表中的字段.它是数据不可分割的最小单位.数据对象:性质相同的数据的集合.是数据的子集.数据结构:数据之间的一种或者多种的特定关系的数据元素的集合.逻辑结构:数据元素...原创 2019-03-11 22:53:11 · 252 阅读 · 0 评论 -
大话数据结构008 二叉树
二叉树树的一种特殊情况,子树的度最大为2, 同时,要求是有序树。以下不是一种树:对于三个节点的二叉树,可以有以下几种形态:左斜树:右斜树:满二叉树:除了叶子结点,所有其他的节点都含有左子树和右子树,所有的叶子结点在同一层。完全二叉树:如果一个二叉树对应着满二叉树的位置一致,就称为完全二叉树以下均不是完全二叉树:二叉树的性质...原创 2019-05-19 18:58:11 · 335 阅读 · 0 评论 -
大话数据结构003 线性表
线性表是一种常见的数据结构:像小朋友排队一样,中间的小朋友知道自己的前面是谁,后面是谁。线性表由零或多个组成的有序列表。开头的元素有且只有一个直接后继,结尾的元素有且只有一个直接前驱。中间的元素有且只有一个直接前驱,和一个直接后继。当线性表没有元素的时候,称为空表。元素的位置是标志元素的位序的唯一标志。类似的星座表就是一种简单的线性表结构:...原创 2019-05-19 11:18:36 · 265 阅读 · 0 评论 -
大话数据结构007 树
树树是典型的的一对多的关系有且仅有一个称为根节点的元素,如图中的A,子树数量不做限制,但是不存在交叉。以下不是树:节点拥有的子树的个数称为度,度为0的节点称为叶子结点或者终端节点,度不为0的节点称为非叶子节点或者分支节点。树的度就是全部子树的度的最大值。父级节点称为双亲,子节点称为孩子。同一个双亲的子节点之间互为兄弟。树的深度是树的最高层级。...原创 2019-05-19 17:27:18 · 231 阅读 · 0 评论 -
Queue、Stack、Deque
这种类型的队列,来到队列中就相当于进入了一个池子,具体谁先出去,要看你的优先级高还是低,最常见的例子就是医院的急救室。不同的病人可能情况不一样,来到医院进入急救室等待,而医生会在结束上一个急救工作后,在急救室中找到一个病情最紧急的病人进行医治,这就是优先级队列。一个非常典型的例子就是我们的盘子,当我们把盘子摞在一起放置的时候,后放上去的盘子会首先被拿出来使用,这是一个典型的LIFO的例子。这种类型就是狭义的队列,最常见的就是一个排队做核酸,后来的排到队伍的后面,先到的先做核酸。原创 2022-10-19 13:27:29 · 212 阅读 · 0 评论 -
链表:ArrayList, LinkedList
List就是元素的有序存储结构,这个有序指的是逻辑上的有序,而不特指实际物理存储形式。它规定了这样的一组存储规则,A0就是第一个元素,A(n-1)就是最后一个元素,n便是List的长度,Ai一定在A(i-1)的后面,在A(i+1)的前面。1. 包含两端的指针,链表大小,一些方法。2. Node节点存储数据、指针3. 提供迭代器的实现。doClear();}doClear();}原创 2022-10-01 10:19:35 · 874 阅读 · 0 评论 -
链表的设计
链表是非连续内存空间的典型代表。类型定义public class Node{ // 值 private String data; // 指针 private Node next; public Node(String data, Node next) { this.data = data; this.next = next; }}链表的创建过程定义一个头结点(这个头结点大部分场景下是不需要的原创 2022-01-24 00:28:44 · 350 阅读 · 0 评论 -
环形队列(数组)的设计
环形队列,无非就是头和尾是连接起来的,避免资源的浪费,可以循环使用数组空间进行数据存储。头指针head:指向当前第一个元素的位置称为头指针。尾指针tail:指向当前最后一个元素的下一个位置为尾指针。当前元素的数量 = (tail - head + size) % size初始状态(空):head == tail满:(tail+1)%size == head初始状态图满状态图(此时7位置是空的)代码实现public class Circl.原创 2022-01-23 09:46:22 · 567 阅读 · 0 评论 -
二维数组与稀疏数组
什么是二维数组二维数组就是我们常见的int[][] array = new int[m][n];其中m为行数,n为列数。行范围0~m-1, 列范围0~n-1例如:0 0 0 0 0 0 0 00 0 1 0 0 0 0 00 0 0 2 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0那么,可以这样定义这个数组int[][] array = new int[5][8];array[1][2] = 1;array.原创 2022-01-23 08:58:19 · 109 阅读 · 0 评论 -
【算法】数组左旋、字符串左旋
什么是数组左旋?数组左旋就是,对给定的n个元素的数组,向左旋转移动d个元素,例如左旋2个元素,得到方法一:使用临时数组时间复杂度:O(n)空间复杂度 :O(d) public static void solution1(int[] array1, int d){ int[] temp = new int[d]; for (int i = 0; i < array1.length; i++){ i...原创 2021-08-15 23:01:51 · 596 阅读 · 0 评论 -
【数据结构系列】Array
什么是数组数组是用于存储一组相同格式的数据的数据结构,一般采用连续的存储空间进行存储。因为采用连续的存储空间,所以只要知道首个元素的位置,并且知道存储的数据是什么格式的,那么后续元素的位置也能够依次推算出来。Java中的数组java中的数组,1. 可以计算数组的长度,使用array.length即可获取数组的长度2. 数组是可以动态分配的3. 元素是有序排列的,首个位置用0表示4. 数组可以作为成员变量、静态变量、局部变量、方法的参数5. 数组元素的类型都实现原创 2021-08-15 22:24:51 · 581 阅读 · 0 评论