java数据结构

基本概念

四类基本结构:
集合:结构中的数据元素的集合,无其他关系
线性结构:结构中的元素存在一对一的关系
树形结构:结构中存在一对多的关系
图结构或网状结构:数据结构中存在多对多的关系

两种不同的存储方法:
顺序存储结构:用数据元素在存储器的相应位置来表示元素的逻辑关系
链式存储结构:在每个元素中增加一个存放地址的指针,用指针来表示元素直接的逻辑关系

时间复杂度

用来判断一个算法所用时间规模,常见算法时间复杂度排序

空间复杂度

算法所需存储过程的度量

	O(1)<O(log n)<O(n)<O(nlog n)<O(n^2) <O(2^n)<O(n!)<O(n^n)

数组

有序数组和无序数组

无序数组优点:插入快
无序数组缺点:查找慢,删除慢

有序数组优点:查找效率高(有下标)
有序数组缺点:删除和插入慢(有整体移位操作)

静态数组和动态数组

静态数组就是大小固定的数组
动态数组的话采用自动扩容的方式实现动态扩容

一种后进先出的数据结构
基本操作:出栈(将栈顶元素出栈),入栈(在栈顶元素上入栈)

队列

队列是先进先出的数据结构
主要实现原理:首先有队头front和队尾rear(相当于两个指针),由队头负责删除,队尾负责插入

普通队列

初始化:数组的front和rear都指向0
入队: 队不满,数组不越界,先队尾位置传值,再队尾下标+1
出队:对不空,先取对头位置,在队头+1

缺陷:每个空间域只能用一次,造成空间让费,容易越界

循环列队

基本原理:当队尾到达最大长度时,将队尾重置与数组初始位置!是空间重复利用

链表

链表是一种插入和删除都比较快的数据结构,缺点是查找比较慢,除非需要频繁下标来随机访问数据,可用链表代替数组
主要结构是在每一个数据上加上一个指针,每个元素通过指针相连
特点:查询元素的话,唯一的方法就是沿着元素的链一直找下去,知道发现这个数据项

单链表

删除:将本元素删除,然后将上个元素指针指向删除节点的下一个节点
新增:将目标元素前一个元素指向目标指针,目标元素指针指向下个元素

双端链表

双端列表与单链表的区别是,不只有节点之间的指针,还存在首节点对尾节点的引用

有序链表

双向链表

查询效率:既可以从前往后查询,也可以从后往前查询!提高查询效率
缺点,删除和新增会负出很大代价!因为指针太多了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值