数据结构与算法--基础入门概念

数据结构与算法--基础入门概念

  • 一: 数据结构
    • 1:数据的层次划分
      • 1:数据类型
      • 2:数据元素
      • 3:数据对象
      • 4:数据项
      • 5:借图辅助理解
    • 2:基于数据的数据结构
      • 1: 物理层的存储结构
      • 2:应用层的逻辑关系结构
        • 线性结构
        • 树形结构
        • 图形结构
        • 集合结构(相对特殊)
    • 如何评价一个数据结构的优劣?
  • 二:算法
    • 算法的两大指标
      • 时间复杂度,随着数据量的增加,所耗费的时间;
      • 空间复杂度,随着数据量的增加,所消耗的空间;
  • 三:常见的基础的算法与数据结构
    • 排序(算法)
    • 数组(数据结构)
    • 链表(数据结构)
    • 树与二叉树(数据结构)
    • 队列(数据结构)
    • 栈(数据结构)

一: 数据结构

1:数据的层次划分

1:数据类型

一个类(相当于Java中的class)

2:数据元素

数据元素属于一种数据类型

3:数据对象

数据类型的实例对象

4:数据项

数据类型的属性,数据类型的实例对象的属性,也是一种数据元素

5:借图辅助理解

数据结构与算法--基础入门概念_第1张图片

2:基于数据的数据结构

1: 物理层的存储结构

  1. 对于计算机,只能识别,存储,计算二进制的"数据";应用层数据数据和程序指令,对其来说没有区别;
  2. 物理层面来说,大致上有 顺序存储链式存储 两种;与之对应的是"数组","链表"概念;当然,数组需要连续的空间,但是访问性能高,空间利用率低;链表可以使用零碎的内存空间,空间利用率高,访问性能总体不如数组;

2:应用层的逻辑关系结构

数据结构的应用层的逻辑关系结构,从应用层来说 ,基本都是基于"数组"和"链表"两种基本类型数据结构而衍生的;但是存在一种逻辑上的"集合结构"较为特殊,可参考后续详解;
如:

线性结构

可以当成"数组"理解

树形结构

可以当成"链表"理解

图形结构

可以当成复杂的"链表"理解

集合结构(相对特殊)

集合结构可以理解成数据元素中的***数据子元素***之间没有显示的逻辑关系,一般相互访问时,需要通过父级层面去访问;

如何评价一个数据结构的优劣?

数据结构的优劣的评价必须配合算法一起应用,才能说其优与劣;

二:算法

算法是依赖数据结构的,以及其实际中的特性,才能最大程度利用各种资源,达到最好的效果;

算法的两大指标

实际情况是,根据具体的场景,需要组合使用两大指标,而采取某种策略;是时间换空间还是空间换时间等;

时间复杂度,随着数据量的增加,所耗费的时间;

  • 线型(不好)
  • 指数型(最差)
  • 对数型(较好)

空间复杂度,随着数据量的增加,所消耗的空间;

  • 线型(不好)
  • 指数型(最差)
  • 对数型(较好)

三:常见的基础的算法与数据结构

复杂的算法和数据结构,通常都是由基本的数据结构和算法组成;

排序(算法)

冒泡,快排,希尔排序,堆排等;

数组(数据结构)

链表(数据结构)

单链表,双向链表

树与二叉树(数据结构)

树的默认规则: 父级"值"大于子级"值’,右节点"值"大于左节点"值";
AVL树,红黑树等,都是在 的基础上对其结构做进一步的限制;在插入/删除查询 性能之间做不同程度的平衡;

队列(数据结构)

先进后出

栈(数据结构)

先进先出

你可能感兴趣的:(编程基础,计算机编程基础)