常见数据结构

本文介绍了数据结构中的基本概念,包括顺序表和链表的优缺点及应用场景,深入讲解了哈希表的工作原理、哈希冲突及其解决方法。此外,还探讨了栈和队列的区别以及二叉树的定义、类型和存储方式,为理解这些基础数据结构提供了全面的指导。
摘要由CSDN通过智能技术生成

1.顺序表-链表

顺序表和链表是数据结构中的两种存储形式。
顺序表(值得是典型的数组),它的原理:将数据放到一块物理地址连续的存储空间中。顺序表的优点:1.空间利用率高。2.读取速度快可以根据下标去读取。顺序表的缺点:1.插入和删除比较慢。删除和插入元素后此元素后面的元素都要动。2.不可以增加长度,有空间限制。适用场景:适用于表长度变化不大场景。多查找,少插入删除。

链表原理:在程序运行过程中动态分配空间,只要存储器有空间,就不会发生存储溢出问题,相邻元素不要求在物理地址上相邻,在逻辑上相邻即可。所存储的空间分为两部分,一部分用来存储节点值,另一部分用来存储节点间关系的指针。链表的优点:1.插入和删除的速度快,保留原来的物理地址。2.没有空间限制,只与内存空间的大小有关。3.动态分配内存空间,不用事先开辟内存。链表的缺点:1.需要占取额外的空间去存储指针,浪费空间。2.查找速度慢,每次都需要从开始节点开始查找。适用场景:适用于频繁的插入删除操作。适用于线性长度变化大。

#ArrayList, LinkedList, Vector 的区别是什么?
ArrayList: 内部采用数组存储元素,支持高效随机访问,支持动态调整大小
LinkedList: 内部采用链表来存储元素,支持快速插入/删除元素,但不支 持高效地随机访问
Vector: 可以看作线程安全版的 ArrayList,使用了synchronized来实现线程同步,所以ArrayList性能方面由于Vector。ArryList和Vector都会根据实际的动态调整容量,只不过在Vector扩容每次增加1倍,而ArrayList每次增加50%.

2.哈希

Hash:是一种信息摘要算法,它还叫做哈希,或者散列。我们平时使用的MD5,SHA1都属于Hash算法,通过输入key进行Hash计算,就可以获取key的HashCode(),比如我们通过校验MD5来验证文件的完整性。

哈希表:也叫做散列表。是根据关键码值(key value)进行访问的数据结构。查找效率即时间复杂度为O(1)。即通过关键码值映射到表中的一个位置来访问,以加快查找的速度,这个映射函数叫做哈希函数,存放记录的数组叫做哈希表。

碰撞:不同的关键字同通过哈希函数计算出相同的哈希地址,这种现象称为哈希冲突或哈希碰撞。就算是MD5这样优秀的算法也会发生碰撞,即两个不同的key也有可能生成相同的MD5。

解决哈希碰撞:①闭散列,也叫开放定址法:当发现哈希冲突&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值