摘要: package com.tc.javabase.collection; package com.tc.javabase.collection; import java.util.ArrayDeque; import java.util.LinkedList; import java.util.Que 阅读全文
posted @ 2020-08-06 01:07 张天赐的博客 阅读(361) 评论(0) 推荐(1) 编辑
摘要: 一.优先队列基础 普通队列:先进先出/ 优先队列:出队顺序和入队顺序无关;和优先级相关 1.为什么使用优先队列? 动态选择优先级最高的任务 如操作系统任务管理。 二.手写基于最大堆的优先队列及复杂度分析 package com.tc.javabase.datastructure.tree.prior 阅读全文
posted @ 2020-08-06 01:01 张天赐的博客 阅读(195) 评论(0) 推荐(1) 编辑
摘要: 1.堆基础 二叉堆的定义: 1.二叉堆是一个完全二叉树结构。完全二叉树不一定是一个满二叉树。完全二叉树左节点必须是满的,右节点为可以为空。把元素一层一层的从左往右依次排列。 2.当满足该节点的左右孩子节点都小于该节点时,称为最大堆。反之,当该节点的左右孩子节点大于该节点时,称为最小堆。 2.手动实现 阅读全文
posted @ 2020-08-06 00:48 张天赐的博客 阅读(237) 评论(0) 推荐(1) 编辑
摘要: 1.二分搜索树基础 1.为什么要有树结构? 将数据使用树结构存储后,出奇的高效。 常见的树结构:二分搜索树/平衡二叉树(AVL 红黑树)/堆/优先队列..等 2.二叉树特点 二叉树具有唯一根节点 二叉树每个节点最多有两个孩子,每个节点最多有一个父亲 二叉树具有天然的递归结构 二叉树不一定是满的 一个 阅读全文
posted @ 2020-08-06 00:34 张天赐的博客 阅读(134) 评论(0) 推荐(1) 编辑
摘要: 1.基于链表的队列基础 结构特性:先进先出 实现原理:采用双指针,多维护一个指针指向队尾,向尾部进行添加操作时间复杂度会变为O(1)。 2.手写基于链表的队列及复杂度分析(和基于动态数组的循环队列对比) package com.tc.javabase.datastructure.linklist.q 阅读全文
posted @ 2020-08-06 00:18 张天赐的博客 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 1.栈基础 结构:先进后出 2.手写基于链表的栈(和基于动态数组的栈对比) package com.tc.javabase.datastructure.linklist.stack; import com.tc.javabase.datastructure.linklist.LinkedList; 阅读全文
posted @ 2020-08-06 00:09 张天赐的博客 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 1.链表基础 之前讲到的动态数组、栈、队列,底层都是依托静态数组,靠resize解决固定容量问题。而链表是一种真正的动态线性的数据结构。 数据储存在节点(Node)中,优点: 真正的动态,不需要处理固定容量问题,缺点:丧失了随机访问的能力。 2.手写链表及时间复杂度分析(对照java中LinkedL 阅读全文
posted @ 2020-08-06 00:05 张天赐的博客 阅读(195) 评论(0) 推荐(0) 编辑