数据结构(一)逻辑结构和存储结构

数据结构

数据结构有两个概念、逻辑结构,物理结构(存储)
逻辑结构:描述数据节点之间的关系。
物理结构:描述数据在内存中是如何存储的(分配内存空间)。

逻辑结构

集合结构,线性结构,树状结构,网络结构(图形)

集合结构

数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系
在这里插入图片描述

线性结构

元素存在一对一的相互关系
在这里插入图片描述

树状结构

元素存在一对多的相互关系
在这里插入图片描述

网络结构(图形)

元素存在多对多的相互关系
在这里插入图片描述

物理结构(存储)

物理结构又叫存储结构,分为以下四种:
顺序存储结构:顺序存储结构。
非顺序存储结构:链式存储结构、索引结构、散列结构。

顺序存储结构

数据存储内存空间是连续
在这里插入图片描述

链式存储结构

数据存储内存空间是不连续
在这里插入图片描述

索引存储结构

分别存放数据元素和元素间关系的存储方式,存在索引(index)用以检索数据
在这里插入图片描述

散列存储结构(哈希)

分别存放数据元素和元素间关系的存储方式,将关键码(key)经函数映射后(通常为 hash)得到数组索引(index),根据数组特性,通过 index 即可得到数据存储地址(addr)

// Java hashMap 映射函数 i:index , n:table.length , hash:hashcode
i = (n - 1) & hash

在这里插入图片描述

数据结构对性能的影响

(1)检索。检索就是在数据结构里查找满足一定条件的节点。一般是给定一个某字段的值,找具有该字段值的节点。 [3]
(2)插入。往数据结构中增加新的节点。
(3)删除。把指定的结点从数据结构中去掉。
(4)更新。改变指定节点的一个或多个字段的值。
(5)排序。把节点按某种指定的顺序重新排列。例如递增或递减。

通常,评估一种数据结构会有如下指标:

  1. 常用数据操作(随机情况下)的速度(查询、插入、删除、修改、排序);
  2. 内存利用率,内存扩展性;
  3. 存储密度;
  4. 存储数据类型是否灵活;
  5. 随机访问性如何(影响数据操作速度即时间复杂度);

最终,一种数据结构的性质表现,会由逻辑结构,存储结构,加其额外定义的规则决定(如栈,限制了只允许栈顶对数据进行操作)。同一存储结构也会因为不同的定义导致差异(如无序数组插入速度比有序数组快,因为无序数组直接在队尾插入数据,不需要挪动数据的位置),也就是说得具体问题还得具体分析。

数组,随机插入数据则时间复杂度为O(n),只在队尾插入则为O(1) ,所有答案如何全看前提条件是什么。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值