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数据结构(一):数据结构与算法概述

一,数据结构概述

(一)什么是数据结构

数据是指所有能够输入到计算机中存储并被计算机程序处理的符号的集合。

  • 比如数据库中保存的学生信息。

数据元素是数据的基本单位。

  • 如果以学号、 性别和姓名来标识某个学生, 那么由学号、 性别和姓名组成的学生记录将构成一个数据元素。

数据项是构成数据元素的不可分割的最小单位。

  • 比如学生记录中的学号、 性别或姓名,每一项就是一个数据项。

数据对象是性质相同的数据元素的集合, 是数据的一个子集。

  • 比如学生记录中的学号数据。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。这些数据间的关联关系就是结构,数据结构通常包括数据的逻辑结构和存储结构两个层次。

(二)数据的逻辑结构

数据的逻辑结构是从数据元素的逻辑关系上抽象描述数据,可以被看作是从具体问题中抽象出来的数学模型。

根据数据元素之间的不同关系特性, 通常可将数据逻辑结构分为线性结构集合树形结构图状结构

  • 后三种总称为非线性结构。

1,集合:

在这里插入图片描述
该结构中的数据元素除了属于同一集合以外, 两两之间并无其他关系。

2,线性结构

在这里插入图片描述

该结构中的数据元素之间存在一对多的逻辑关系。

3,树形结构

在这里插入图片描述

该结构中的数据元素之间存在一对多的逻辑关系。

4,图状结构

在这里插入图片描述

该结构中的数据元素之间存在多对多的逻辑关系。

(三)数据的存储结构

数据的存储结构(又称物理结构)是指数据在计算机中的表示方法, 是数据的逻辑结构在计算机中的存储实现, 因此在存储时应包含数据元素本身及数据元素之间的关系。

1,顺序存储结构

顺序存储结构采用一组物理上连续的存储单元来依次存放所有的数据元素。因为逻辑上相邻地两个数据元素的存储地址也相邻,所以它们的关系可以由存储单元地址间的关系来间接表示。

在这里插入图片描述

2,链式存储结构

链式存储结构用一个结点(存储这些结点的空间不一定连续)来存储一个数据元素,用附加到结点的指针来表示数据元素之间的关系。

在这里插入图片描述

3,索引存储结构

索引存储结构在存储所有数据元素之后,还需要建立附加的索引表来标识唯一的数据元素。
在这里插入图片描述

4,哈希存储结构

哈希(或散列) 存储结构根据结点的关键字来使用事先设计好的哈希(或散列) 函数计算出数据元素结点的存储地址。
在这里插入图片描述

二,数据类型概述

(一)python基本数据类型

数据类型是指一组值的集合及定义在这组值上的一组操作的总称。

由于python是一种强类型、动态类型的语言,其变量不需要声明,但变量在使用前必须被赋值后才会被创建和使用, 创建后变量将有具体的数据类型。

python中常用的一些内置的数据类型:数字(Number)数据类型、字符串(String )数据类型、列表(List)数据类型、元组(Tuple ) 数据类型、集合(Set)数据类型、字典(Dict)数据类型.

(二)抽象数据类型

抽象数据类型(Abstract Data Type, ADT)是指一个数学模型及定义在该模型上的一组操作。 具体包括数据对象、 数据对象上关系的集合, 以及对数据对象的基本操作的集合。

ADT结构表示如下:
在这里插入图片描述
其中基本操作表示如下:
在这里插入图片描述
一个较完整的示例:
在这里插入图片描述
我们将通过python中的委托机制对内置的数据类型进行扩展,从而实现定制化的数据结构。

三,算法概述

(一)什么是算法

算法是对待特定问题求解步骤的一种描述, 它是指令的有限序列。

  • 算法和程序是不同的, 程序是指使用某种计算机语言对一个算法的具体实现, 即程序描述了具体怎么做, 而算法侧重于描述解决问题的方法。

1,算法的5个重要特性

  1. 有穷性: 一个算法对于任何合法的输入必须在执行有穷步之后结束, 且每一步都可在有穷的时间内完成。
  2. 确定性: 算法中每一条指令都必须具有确切的含义, 不能有二义性, 并且在任何条件下,算法的任意一条执行路径都是惟一的, 即对于相同的输入所得的输出相同。
  3. 可行性: 一个算法是可行的, 是指算法中描述的操作都可以通过基本运算执行有限次操作来实现。
  4. 输入: 一个算法有零个或多个输入, 这些输入取自于某个特定对象的集合。
  5. 输出: 一个算法有零个或多个输出, 这些输出是同输入有着某些特定关系的量

2,算法的5个衡量标准

  1. 正确性: 要求算法能够正确地执行, 并满足预先设定的功能和性能要求。
  2. 可读性: 一个算法的可读性好才便于人们理解, 人们才有可能对程序进行调试, 并从中找出错误。
  3. 健壮性: 当输入的数据不合法或运行环境改变时, 算法能恰当地做出反应或进行处理。
  4. 时间复杂度: 对一个算法执行时间效率的度量。
  5. 空间复杂度: 对一个算法在执行过程中所占用的存储空间的度量。

(二)算法的时间复杂度

算法的执行时间是通过依据该算法编写的程序在计算机上执行时所需要的时间来计算的,具体可以参考下面两篇:

算法时间复杂度分析算法—时间复杂度

(三)算法的空间复杂度

算法的空间复杂度一般也认为是问题规模 n 的函数。在对算法的空间复杂度进行研究时, 只分析临时变量所占用的存储空间。

第16话:算法的空间复杂度算法分析中的空间复杂度

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 16:56:46  更:2021-08-23 16:56: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 22:28:43-

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