数据结构基础

简介: 数据结构的基本概念

定义

  • 在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构(Structure)。数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据结构包括三方面的内容:逻辑结构、存储结构和数据的运算。数据的逻辑结构和存储结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。

逻辑结构

  • 逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。它与数据的存储无关,是独立于计算机的
  • 数据的逻辑结构分为线性结构和非线性结构

    • 集合 结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他关系。 类似于数学上的集合
    • 线性结构 结构中的数据元素之间只存在一对一的关系。比如排队
    • 树形结构 结构中的数据元素之间存在一对多的关系。比如家族族谱
    • 图状结构或网状结构 结构中的数据元素之间存在多对多的关系。 比如地图

物理结构

  • 存储结构是指数据结构在计算机中的表示(又称映像),也称物理结构。它包括数据元素的表示和关系的表示。数据的存储结构是逻辑结构用计算机语言的实现,它依赖于计算机语言。数据的存储结构主要有:顺序存储、链式存储、索引存储和散列存储。

    • 顺序存储:存储的物理位置相邻。(p.s. 物理位置即信息在计算机中的位置。)
    • 链接存储:存储的物理位置未必相邻,通过记录相邻元素的物理位置来找到相邻元素。
    • 索引存储:类似于目录,以后可以联系操作系统的文件系统章节来理解。
    • 散列存储:通过关键字直接计算出元素的物理地址(以后详解)。

算法的五个特征

  • 1,有穷性:有限步之后结束
  • 2,确定性:不存在二义性,即没有歧义
  • 3,可行性:比如受限于计算机的计算能力,有些算法虽然理论上可行,但实际上无法完成。
  • 4,输入:能被计算机处理的各种类型数据,如数字,音频,图像等等。
  • 5,输出:一至多个程序输出结果。

算法的复杂度

  • 时间复杂度:

    • • 它用来衡量算法随着问题规模增大,算法执行时间增长的快慢;
    • • 是问题规模的函数:T(n)是时间规模函数 时间复杂度主要分析T(n)的数量级
    • • T(n)=O(f(n)) f(n)是算法中基本运算的频度 一般我们考虑最坏情况下的时间复杂度
  • 空间复杂度:

    • • 它用来衡量算法随着问题规模增大,算法所需空间的快慢;
    • • 是问题规模的函数:S(n)=O(g(n)) ;算法所需空间的增长率和g(n)的增长率相同。

概要: 复杂度计算为重点

  • 常用的时间复杂度大小关系:
  • 复杂度如何计算

    • 时间复杂度计算(单个循环体)

      • 直接关注循环体的执行次数,设为k
    • 时间复杂度计算(多个循环体)

      • 两个运算规则:乘法规则,加法规则。
目录
相关文章
|
存储 人工智能 算法
【数据结构基础】之树的介绍,生动形象,通俗易懂,算法入门必看
【数据结构基础】之树的介绍,生动形象,通俗易懂,算法入门必看
【数据结构基础】之树的介绍,生动形象,通俗易懂,算法入门必看
|
存储 Java
Java基础数组模仿栈数据结构案例
Java基础数组模仿栈数据结构案例
Java基础数组模仿栈数据结构案例
|
存储 算法
常见数据结构-红黑树(上)基础
常见数据结构-红黑树(上)基础
149 0
|
PyTorch 算法框架/工具 异构计算
Pytorch 基础-tensor 数据结构
Pytorch 基础-tensor 数据结构
317 0
|
算法 C++
算法与数据结构全阶班-左程云版(二)基础阶段之4.堆和比较器(下)
本文主要介绍了堆和比较器:堆包括大根堆和小根堆;比较器的实质就是重载比较运算符,可以用于普通方式的排序和自定义的排序。
算法与数据结构全阶班-左程云版(二)基础阶段之4.堆和比较器(下)
算法与数据结构全阶班-左程云版(二)基础阶段之4.堆和比较器(中)
本文主要介绍了堆和比较器:堆包括大根堆和小根堆;比较器的实质就是重载比较运算符,可以用于普通方式的排序和自定义的排序。
算法与数据结构全阶班-左程云版(二)基础阶段之4.堆和比较器(中)
算法与数据结构全阶班-左程云版(二)基础阶段之4.堆和比较器(上)
本文主要介绍了堆和比较器:堆包括大根堆和小根堆;比较器的实质就是重载比较运算符,可以用于普通方式的排序和自定义的排序。
算法与数据结构全阶班-左程云版(二)基础阶段之4.堆和比较器(上)
算法与数据结构全阶班-左程云版(二)基础阶段之3.归并排序和快速排序(下)
本文主要介绍了两种排序,归并排序和快速排序,归并排序有递归和非递归2种方式实现,快速排序的升级版为荷兰国旗问题。
算法与数据结构全阶班-左程云版(二)基础阶段之3.归并排序和快速排序(下)
算法与数据结构全阶班-左程云版(二)基础阶段之3.归并排序和快速排序(上)
本文主要介绍了两种排序,归并排序和快速排序,归并排序有递归和非递归2种方式实现,快速排序的升级版为荷兰国旗问题。
算法与数据结构全阶班-左程云版(二)基础阶段之3.归并排序和快速排序(上)
算法与数据结构全阶班-左程云版(二)基础阶段之2.链表、栈、队列、递归行为、哈希表和有序表(下)
本文主要介绍了一些常用的数据结构,包括链表、栈、队列、递归、哈希表和有序表。
算法与数据结构全阶班-左程云版(二)基础阶段之2.链表、栈、队列、递归行为、哈希表和有序表(下)