数据结构

作者: ADO_AI | 来源:发表于2020-07-05 00:42 被阅读0次
写在数据结构之前:前一阵通过阅读编程范式有关内容,对“面向对象编程”和“面向过程编程”有了更深入的认识。最大的认知提升在于对于程序的组织方法,不再局限于过去的面向过程编程的方式,而是认识到“对于大型程序的组织,面向对象编程(OOP可以将数据与函数绑定到一起,进行封装),是更易维护,更易复用,更易扩展,更易应变,即更加合理的方式”。其中一个令人印象深刻的例子就是燃油车和电动车;两者都提供相同的接口:方向盘/刹车/油门; 使用者可以无缝衔接地开不同车,但两种类型车的底层实现原理(例如发动机系统)完全不同;这充分体现了面向对象的编程思维(封装/提供操作接口)及其带来的优越性:“更易复用,更易扩展”。当然,实际项目中往往是面向过程编程+面向对象编程范式的综合应用。

为了更好地学习程序组织的方法和基本思想,我又尝试着去阅读了《数据结构与算法 python语言描述》《数据结构与算法 Python》(B站国家精品课程视频与内部教材PDF); 对近期所学做一个笔记摘要。综合阅读以上资料的过程中,诸多概念让我感到困惑:

1. 抽象数据类型与面向对象程序设计技术

2.结构性数据结构   [集合结构/线性(序列)结构/层次结构/树形结构/图结构]
  功能性数据结构(容器)

3. 线性结构:线性表 栈 队列 双端队列 

接下来我结合所学所看,做一个整体式的解释

抽象数据类型(Abstract Data Type,ADT)是计算机领域中被广泛接受的一种思想和方法,也是一种用于设计和实现程序模块的有效技术。ADT的基本思想是抽象,或者说是数据抽象(与函数定义的计算抽象或过程抽象对应)。python面向对象的程序设计技术是实现抽象数据类型的一种技术。--《数据结构与算法 python语言描述》裘宗燕 P34

抽象数据类型的实施(也可说是面向对象)一共有三步:
  1. 数据构造(产生对象,如 model = keras.models.Sequential() )
  2. 数据解析(获取对象有用信息,如 model.summary())
  3. 数据变动(修改对象的内部状态,如 model.add(……),model.compile(), model.fit)
以上就能看出keras中的学习模型从构建到模型训练均体现了抽象数据类型(即面向对象编程)的思想;
而之前的数据preprocessing和模型训练后的visulization则不可避免地使用面向过程编程的方式
问题1 回答:在抽象数据类型思想的指导下,面向对象编程以数据为中心进行程序组织。裘书中所讲的每种数据结构均以python语言的OOP范式进行实现。理解基本的数据结构类型及其特征是一切利用OOP进行程序组织和数据扩展的基础。
问题2 3 回答:

按照数据集合元素间是否有相互关系分为结构性数据和功能性数据:

  1. 结构性数据间元素遵循事先定义的相互关系, 包括线性(序列)结构 层次/树形结构 图结构
  2. 功能性数据 只需要能够完成元素的存储和使用即可,这是最基本的功能性的需求,无需(也不允许)规定元素间的相互关系,故又称容器()包括栈 队列 双端队列 字典等
  • 线性结构,属结构性数据的概念,又称线性表,包括顺序表和链接表,实际是线性表的不同实现方式。具体到python中,其内置数据类型list和tuple本质就是顺序表。链接表又包括单向链接表及其变形,循环单链表,双链表
  • 栈 队列 双端队列:属功能性数据的概念,也是“线状”结构,最重要的特征在于其数据结构内元素间无相互关系。这些“线状结构”可经由顺序表或链接表加以实现。具体到python,可借助list或定义好的链接表的继承改写得以实现!

相关文章

  • IOS开发_数据结构

    1、数据结构; 2、算法; 3、数据结构与算法; 1、数据结构; 1.1 概念: 数据结构:数据结构是计算...

  • py基础

    5Python集合容器 数据结构数据结构 一般将数据结构分为两大类: 线性数据结构和非线性数据结构。 线性数据结构...

  • 思维导图之数据结构+算法

    数据结构+算法 = 程序 数据结构比较 参考文章 数据结构与算法数据结构与算法(java)

  • 数据结构与算法分析:大纲]

    00数据结构与算法分析:大纲01数据结构:数组02数据结构:链表03数据结构:栈03数据结构:队列 本系列课程主要...

  • 数据结构:数组

    00数据结构与算法分析:大纲01数据结构:数组02数据结构:链表03数据结构:栈03数据结构:队列 数组 数组是一...

  • 数据结构—概述

    数据结构概述 数据结构概述:程序设计 = 数据结构 + 算法数据结构:数据元素之间存在所有特定关系的集合,数据结构...

  • OVS 源码分析整理

    OVS 核心代码 OVS 架构 OVS 主要的数据结构数据结构关系图主要的数据结构和数据结构的参数数据结构代码 d...

  • 01. 数据结构与算法绪论

    一、数据结构 1. 什么是数据结构 2. 数据结构的分类 3. 常用的数据结构 4. 数据结构的应用表现 二、算法...

  • 数据结构与算法 - 查找

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构数据结构...

  • C#之数据结构(上)

    数据结构 一般将数据结构分为两大类: 线性数据结构和非线性数据结构。 线性数据结构有: 线性表、栈、队列、串、数组...

网友评论

    本文标题:数据结构

    本文链接:https://www.haomeiwen.com/subject/vxrmqktx.html