IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Python算法图解(一)数据结构的分类和基本运算 -> 正文阅读

[数据结构与算法]Python算法图解(一)数据结构的分类和基本运算

Python算法图解(一)数据结构的分类和基本运算

本系列内容来自何韬编著的《Python算法图解》

1 数据结构的分类和基本运算

数据是信息的载体.
数据元素是数据的基本单位,通常作为一个整体考虑,一个数据元素可由若干数据项组成,也称为节点记录。比如一条购物清单就是一个数据元素,包括购买物品的数量、单价、名称等数据项。

数据结构是相互之间存在一种或者多种特定关系的数据元素的集合。在任何问题中,数据元素都不是独立存在的,它们之间存在某种关系,这种关系称为结构
数据结构包含逻辑结构、存储结构(物理结构)、运算三个要素。
数据结构的逻辑结构和存储结构密不可分,一个算法的设计取决于所选的逻辑结构,算法的时间则依赖于所采用的存储结构。

1.1 逻辑结构

逻辑结构是数据元素之间的关系,存储结构是数据元素及其关系在计算机中的存储方式。
逻辑结构可分为线性结构( N个数据元素有序排列的集合,元素前后是1对1的关系)和非线性结构(除线性结构之外,一对多或多对多)。

线性结构应该符合的特征:

  1. (必选项)集合中必存在唯一的一个“第一个元素”。
  2. (必选项)集合中必存在唯一的一个“最后的元素”。
  3. (可选项)除最后的元素之外,其他数据元素均有唯一的“后继”,即指向后一个元素的方式。
  4. (可选项)除第一个元素之外,其他数据元素均有唯一的“前驱”,即指向前一个元素的方式。

线性结构的数据元素之间存在”一对一“的线性关系。符合线性结构的数据结构包括一维数组、栈、队列、链表等:
在这里插入图片描述
非线性结构相对于线性结构有一个最明显的区别:各个数据元素不再保持在一个线性序列中,每个数据元素可能与零个或多个其他数据发生联系,这就是一对多或多对一的关系。
根据关系的不同,可将非线性结构分为层次结构和群结构两种类别。
常见的非线性结构有二维数组、多维数组、广义表、树(二叉树)结构、图结构等:
在这里插入图片描述

1.2 存储结构

数据的存储结构分为4种:

  1. 顺序存储结构:逻辑上相邻的元素在计算机内也相邻。采用一段连续的存储空间。此结构可以快速定位第几个元素的地址,但是插入和删除数据需要移动大量元素,使用一整块存储单元可能产生较多的外部碎片。
    在这里插入图片描述

  2. 链式存储结构:逻辑上相邻的元素,在计算机内存中的存储位置不要求必须相邻,相邻逻辑元素借助元素存储地址的指针域定位下一个元素的地址。
    优点:可以利用碎片位置,可以实现快速增加和删除数据;
    缺点:需要额外空间存储指针域,不能实现随机访问(下标访问)。
    在这里插入图片描述

  3. 散列存储结构(哈希Hash存储结构):由节点的关键码值决定节点的存储位置。用散列函数确定数据元素的存储位置与关键码值之间的对应关系。在这里插入图片描述

  4. 索引存储结构:除建立在存储节点信息外,还建立附加的索引表来表示节点的地址,索引表是由若干索引项组成。所引向的一般形式是键的关键字对应值的内存地址。
    优点:检索速度快;
    缺点:附加的索引表额外占用存储空间,且增加和删除数据,也需要修改索引表,会花费多余时间。
    在这里插入图片描述

1.3 基本运算

数据结构的基本运算包括:创建数据结构,清除数据结构,插入数据元素,删除数据元素,更新数据元素,查找数据元素,按序重新排列数据,判定某个数据结构是否为空,或者是否已达到最大允许容量,统计数据元素的个数等。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:49:39  更:2022-11-05 00:51:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:50:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码