zoukankan      html  css  js  c++  java
  • 算法与数据结构 开篇概论

    线索

    数据结构课程的概论,从以下这条线索进行阐述:
    问题 -> 数学化(数学建模) -> 选择数据结构DataStructure -> 算法Algorithm 及 设计步骤 -> 验证正确性 -> efficient效率检验 -> 程序实现

    数据结构 和 数据类型

    何为数据结构?

    数据结构描述了数据对象之间的结构关系,是相互之间具有一种或者多种特定关系的数据集合。

    数据结构,是抽象数据类型ADT的物理实现。

    为什么要使用数据结构?

    我们需要解决大量的非数值计算问题,由于问题求解的需要,我们经常要自定义一些数据类型和它的一些基础运算,来便于我们解决这些问题。因此我们有了 抽象数据类型(自定义的数据类型) 与 数据结构(抽象数据类型的物理实现)。

    数据结构需要考虑哪些问题?

    (1)数据的逻辑结构:主要分为 线性结构 和 非线性结构。线性结构有 线性表(数组),队列queue,栈stack等等;非线性结构有 树tree,图map,集合set等等。

    (2)数据的物理结构:由数据的逻辑结构决定,在内存中的存储方式,有 连续的 和 不连续的 两种。连续:在内存中按 连续的相对位置 存放(数组);不连续:在内存中按 无序的相对位置 存放,由指针来确定位置。

    (3)数据的运算:为了解决非数值问题,需要定义数据类型,实现数据结构,并定义数据类型的相关计算。

    何为抽象数据类型ADT?为什么要使用ADT?

    简单的来说,为了解决实际问题,我们 自定义 了一些拥有相同属性的数据,并把它们抽象成一个数据类型(非常像面向对象语言中 类的定义),就是抽象数据类型CDT了。
    为了物理实现ADT,我们需要考虑三个方向的内容:1)数据的逻辑结构 2)数据的物理结构 3)数据的运算。引入了数据类型的物理实现:数据结构。

    数据类型需要考虑哪些问题?

    考虑1 相同数据类型的数据 需要具有哪些属性,即它的定义是什么。定义分为1)数据的特征 和 2)运算。
    考虑2 在某种存储状态下,运算如何实现

    类比于 C++等面向对象语言中的 class 需要考虑的问题:

    • 这个类里面需要具有哪些属性?
    • 这个类里面有哪些方法,需要怎么实现?

    考虑1 对应于 数据结构中的逻辑结构。
    考虑2 对应于 数据结构中的物理结构和运算。

    数据结构 与 数据类型 的联系

    数据是按照 数据结构 分类的。同一类数据 的全体 称为数据类型。
    数据结构,是抽象数据类型的物理实现。它反映了 同一种数据类型所具有的属性 和 方法。

    由于数据类型是按照数据结构划分的,因此,数据结构 和 数据类型 是紧密相连的,是一一对应的。

    Algorithm 算法

    确定完数据结构之后,我们需要选用策略来解决实际的问题。我们需要设计算法 来实现数据元素的逻辑关系结构,然后根据逻辑结构来选择物理存储方式。

  • 相关阅读:
    在CentOS7上搭建MySQL主从复制与读写分离
    数据库 引擎
    数据库 事务
    数据库 索引
    MYSQL
    基于mysqld_multi实现MySQL 5.7.24多实例多进程配置
    09 引导过程与故障修复
    chapter 8.3
    作业 8.1
    Chapter 04 作业
  • 原文地址:https://www.cnblogs.com/qq952693358/p/5829882.html
Copyright © 2011-2022 走看看