数据结构和算法总结(一)

复习有关数据结构的基础知识,参考百度百科

数据结构是计算机存储,组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.精心选择的数据结构能带提高更高的运行或存储效率.
数据结构是指同一数据元素类中各数据元素之间存在的关系.分为: 逻辑结构/ 存储结构(物理结构)/数据的运算
数据的逻辑结构: 反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关.
数据的逻辑结构包括:  集合结构 线性结构  树形结构  图形结构
集合结构:  类似数学里面的一个圆圈,大家都在一个圈子里
线性结构: 大家都是在一根草上的蚂蚱的意思, 线性结构是一对一的关系
树形结构: 一层一层的,类似大树一样,根,主干,枝干,分支. 树形结构是一对多的关系
图形结构:多对多关系,类似人的交集复杂关系
数据结构的物理(存储)结构: 指数据的逻辑结构在计算机存储空间的存放形式.
   数据的物理结构是数据结构在计算机中的表示(又称为映像),包括数据元素的机内表示和关系的机内表示.有顺序/链接/索引/散列等多种.
  数据元素之间的关系的机内表示可以分为顺序映像和非顺序映像.常见的两种存储结构: 顺序存储结构和链式存储结构.
  顺序存储方法: 是把逻辑上相邻的结点存储的物理位置相邻的存储单元里.
  链接存储方法:相邻的结点的逻辑关系是有附加的指针字段表示的.称为链式存储结构,链式存储结构通常借助于程序设计语言中的指针类型来实现.
 索引存储方法: 除建立存储结点信息外, 还建立附加的索引表来标识结点的地址
 散列存储方法: 就是根据结点的关键字直接计算出该结点的存储地址.
 常用结构
    数组:  把具有相同类型的若干变量按有序的形式组织起来.这些按序排列的同类数据元素的集合称为数组.  
    栈: 是只能在某一端插入和删除的特殊线性表.按照先进后出的原则存储数据.先进数据在栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)
    队列:一种特殊的线性表,只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作.进行插入操作的端称为队尾,进行删除操作的端称为对头.队列是按照先进先出或后进后出的原则组织数据的.
   链表: 是一种物理存储单元上非连接,非顺序的存储结构,它既可以表示线性结构,也可以用于表示非线性结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成.每个结点包括两部分: 一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域
树: 包含n (n>0)个结点的有穷集合K,且在K中定义了一个关系N,N满足以下条件:
      1. 有且仅有一个结点KO,称为树的根节点
      2.K中各结点,对关系N来说可以有m 个后继(m>=0)
图: 由结点的有穷集合V和边的集合E组成.为了与树形结构区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,表示这两个顶点具有相邻关系
堆: 是一种特殊的树形数据结构, 每个结点都有一个值.通常所说的堆的数据结构,是指二叉堆.堆的特点是根节点的值最小(或最大),且根结点的两个子树也是一个堆.
散列表: 若结构中存在关键字和K相等的记录,则必定在f(K)存储位置上.f为散列函数,按这思想建立的表叫散列表
   一个算法的评价只要是从时间复杂度和空间复杂度来考虑。
 算法的时间复杂度是指执行算法所需要的计算工作量。
O(1) < O(logn) < O(n) < O(nlogn) < O(n²) < O(2的n次方)< O(n!) < O(n的n次方)
空间复杂度是指算法在计算机内执行时所需存储空间的度量

发布了36 篇原创文章 · 获赞 16 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_28551705/article/details/86222680