-
算法图解之广度优先搜索
所属栏目:[安全] 日期:2021-04-02 热度:162
广度优先搜索的应用场景,如下: (1)编写国际跳棋AI,计算最少走多少步就可获胜; (2)编写拼写检查器,计算最少编辑多个地方就可将错拼的单词改为正确的单词,如将READED改为READER需要编辑一个地方; (3)根据你的人际关系网络找到关系最近的医生; 图简介 假[详细]
-
算法图解之内存的工作原理
所属栏目:[安全] 日期:2021-04-02 热度:91
? 其中fe0ffeeb是一个内存单元的地址,需要将数据存储到内存时,你请求计算机提供存储空间,计算机给你一个存储地址。需要存储多项数据时,有两种基本方式,一种是数组,另外一种是链表。但它们并非都适用于所有情形,因此知道它们的差别非常重要。[详细]
-
【数据结构】Hash表
所属栏目:[安全] 日期:2021-04-01 热度:83
副标题#e# 【数据结构】Hash表 Hash表也叫散列表,是一种线性数据结构。在一般情况下,可以用o(1)的时间复杂度进行数据的增删改查。在Java开发语言中,HashMap的底层就是一个散列表。 1. 什么是Hash表 Hash表是一种线性数据结构,这种数据结构的底层一般是[详细]
-
自己动手实现java数据结构(五)哈希表
所属栏目:[安全] 日期:2021-04-01 热度:189
副标题#e# 1.哈希表介绍 前面我们已经介绍了许多类型的数据结构。在想要查询容器内特定元素时,有序向量使得我们能使用二分查找法进行精确的查询((O(logN)对数复杂度,很高效)。 可人类总是不知满足,依然在寻求一种更高效的特定元素查询的数据结构,哈希表[详细]
-
自己动手实现java数据结构(七) AVL树
所属栏目:[安全] 日期:2021-04-01 热度:130
副标题#e# 1.AVL树介绍 前面我们已经介绍了二叉搜索树。普通的二叉搜索树在插入、删除数据时可能使得全树的数据分布不平衡,退化,导致二叉搜索树最关键的查询效率急剧降低。这也引出了平衡二叉搜索树的概念,平衡二叉搜索树在此前的基础上,通过一系列的等[详细]
-
自己动手实现java数据结构(八) 优先级队列
所属栏目:[安全] 日期:2021-04-01 热度:141
副标题#e# 1.优先级队列介绍 1.1 优先级队列 有时在调度任务时,我们会想要先处理优先级更高的任务。例如,对于同一个柜台,在决定队列中下一个服务的用户时,总是倾向于优先服务VIP用户,而让普通用户等待,即使普通的用户是先加入队列的。 优先级队列和普[详细]
-
自己动手实现java数据结构(六)二叉搜索树
所属栏目:[安全] 日期:2021-04-01 热度:71
副标题#e# 1.二叉搜索树介绍 前面我们已经介绍过了向量和链表。有序向量可以以二分查找的方式高效的查找特定元素,而缺点是插入删除的效率较低(需要整体移动内部元素);链表的优点在于插入,删除元素时效率较高,但由于不支持随机访问,特定元素的查找效率[详细]
-
自己动手实现java数据结构(一) 向量
所属栏目:[安全] 日期:2021-04-01 热度:173
副标题#e# 1.向量介绍 计算机程序主要运行在内存中,而内存在逻辑上可以被看做是连续的地址。为了充分利用这一特性,在主流的编程语言中都存在一种底层的被称为数组(Array)的数据结构与之对应。在使用数组时需要事先声明固定的大小以便程序在运行时为其开辟[详细]
-
自己动手实现java数据结构(四)双端队列
所属栏目:[安全] 日期:2021-04-01 热度:142
副标题#e# 1.双端队列介绍 在介绍双端队列之前,我们需要先介绍队列的概念。和栈相对应,在许多算法设计中,需要一种"先进先出(First Input First Output)"的数据结构,因而一种被称为"队列(Queue)"的数据结构被抽象了出来(因为现实中的队列,就是先进先出的[详细]
-
自己动手实现java数据结构(三) 栈
所属栏目:[安全] 日期:2021-04-01 热度:170
副标题#e# 1.栈的介绍 在许多算法设计中都需要一种"先进后出(First Input Last Output)"的数据结构,因而一种被称为"栈"的数据结构被抽象了出来。 栈的结构类似一个罐头:只有一个开口;先被放进去的东西沉在底下,后放进去的东西被放在顶部;想拿东西必须[详细]
-
自己动手实现java数据结构(二) 链表
所属栏目:[安全] 日期:2021-04-01 热度:158
副标题#e# 1.链表介绍 前面我们已经介绍了向量,向量是基于数组进行数据存储的线性表。今天,要介绍的是线性表的另一种实现方式---链表。 链表和向量都是线性表,从使用者的角度上依然被视为一个线性的列表结构。但是,链表内部存储数据的方式却和向量大不[详细]
-
栈-java代码
所属栏目:[安全] 日期:2021-04-01 热度:126
import java.util.Arrays;public class StackDemo { private int maxSize; long[] stackArray; top; // 构造器 public StackDemo( s){ 初始化栈 maxSize = s; stackArray = new [maxSize]; top = -1; } 入栈 void push( element){ stackArray[++top] = ele[详细]
-
『数据结构』线段树
所属栏目:[安全] 日期:2021-04-01 热度:144
线段树原理 线段树,类似区间树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为(O(logn))。 线段树的每个节点表示一个区间,子节点则分别表示父节点的[详细]
-
【数据结构】【CF1073D】 Berland Fair
所属栏目:[安全] 日期:2021-04-01 热度:52
副标题#e# Description 给定 (n) 个商店,他们围成一个圆圈,按照顺时针从 (1) 到 (n) 编号。你有 (T) 元钱,从 (1) 号点开始按照顺时针方向走,每到一个商店,只要钱够就必须买这个商店的物品。商店中物品是无限的,即多次到达可能多次购买。求[详细]
-
【数据结构】 最小生成树(四)——利用kruskal算法搞定例题×3+
所属栏目:[安全] 日期:2021-04-01 热度:104
副标题#e# 在这一专辑(最小生成树)中的上一期讲到了prim算法,但是prim算法比较难懂,为了避免看不懂,就先用kruskal算法写题吧,下面将会将三道例题,加一道变形,以及一道大水题,水到不用高级数据结构,建树,画图,最短路径什么的,统统不需要。废话[详细]
-
《数据结构》中的英语名词
所属栏目:[安全] 日期:2021-04-01 热度:133
data 数据data element 数据元素data item 数据项data object 数据对象data structure 数据结构ADT (Abstruct Date Type) 抽象数据类型alogrithm 算法correctness 正确性readability 可读性robustness 健壮性frequency count 频度asymptotic time complexi[详细]
-
【数据结构】二、线性表
所属栏目:[安全] 日期:2021-04-01 热度:65
2.1. 定义与特点 定义 ? 具有相同数据类型的 (n(ngeq0)) 个数据元素的有限序列。(n) 是表长,当 (n=0) 时该线性表是一个空表。若用 (L) 表示线性表,一般表示为: [ L=(a_1,a_2,...,a_i,a_{i+1},a_n) ] 特点 元素个数有限 元素具有逻辑上的顺序[详细]
-
【数据结构】第二章小结
所属栏目:[安全] 日期:2021-03-31 热度:157
副标题#e# ps:第一次用博客园写,记录第一次 一、数据结构第二章主要为:顺序表和链表的构造及其增删查改的一些基本操作,以及粗略计算它们的时间or空间的复杂度。 ? ? ? 1、顺序表: ? ? ? ? ? ? ? ? ? ? ? ? ?(1)? 特点:逻辑结构上相邻,物理存储上也[详细]
-
【数据结构】 单向链表
所属栏目:[安全] 日期:2021-03-31 热度:196
【1】错误:H-next =NULL 或其他“让指针指向空”的语句运行报错:“ ‘NULL‘ : undeclared identifier”? 、 “ ‘=‘ : cannot convert from ‘int‘ to ‘struct node *‘? ” 原因:未引入头文件 #include “stdio.h”?,把NULL定义为一个空地址是在 s[详细]
-
[JZOJ6089]【CodeChef 2014 April Challenge】Final Battle of C
所属栏目:[安全] 日期:2021-03-31 热度:124
Description (n,q,Vleq 100000,w_ileq 10^9) Solution 又是一道大数据结构 由于有一个下取整,这就导致了不同时间的修改值是不能简单的直接加在一起的。 容易发现,1操作的影响只会影响到距离不超过log的点。 这样我们很容易得到一个(qlog nlog ^2V[详细]
-
【数据结构】红黑树与跳表-(SortSet)-(TreeMap)-(TreeSet)
所属栏目:[安全] 日期:2021-03-31 热度:75
副标题#e# SortSet 有序的Set,其实在Java中TreeSet是SortSet的唯一实现类,内部通过TreeMap实现的;而TreeMap是通过红黑树实现的;而在Redis中是通过跳表实现的; SkipList 跳表,思想类似平衡二叉树,但又不一样;下面摘了一个介绍: skiplist数据结构简[详细]
-
《数据结构》实验三: 栈和队列实验
所属栏目:[安全] 日期:2021-03-31 热度:62
《数据结构》实验三:??? 栈和队列实验 一..实验目的 ???? 巩固栈和队列数据结构,学会运用栈和队列。 1.回顾栈和队列的逻辑结构和受限操作特点,栈和队列的物理存储结构和常见操作。 2.学习运用栈和队列的知识来解决实际问题。 3.进一步巩固程序调试方法[详细]
-
《数据结构》实验二: 线性表实验
所属栏目:[安全] 日期:2021-03-31 热度:180
《数据结构》实验二:?????线性表实验 一..实验目的 ?????巩固线性表的数据结构,学会线性表的应用。 1.回顾线性表的逻辑结构,线性表的物理存储结构和常见操作。 2.学习运用线性表的知识来解决实际问题。 3.进一步巩固程序调试方法。 4.进一步巩固模板程[详细]
-
《数据结构》实验四: 字符串和多维数组 实验
所属栏目:[安全] 日期:2021-03-31 热度:90
《数据结构》实验四:????字符串和多维数组?实验 一..实验目的 ?????巩固字符串和多维数组相关知识,学会运用灵活应用。 1.回顾字符串和多维数组的逻辑结构和存储操作特点,字符和数组的物理存储结构和常见操作。 2.学习运用字符串和和数组的知识来解决实[详细]
-
算法图解之快速排序
所属栏目:[安全] 日期:2021-03-20 热度:152
副标题#e# 分而治之(又称DC) 书中举了一个例子,假设你是农场主,有一块土地,如图所示: ? 你要将这块地均匀分成方块,且分出的方块要尽可能大。 ? ? 从图上看,显然是不符合预期结果的。 那么如何将一块地均匀分成方块,并确保分出的方块是最大的呢?使用D[详细]
