《数据结构》-第一章 绪论(知识点总结)


写在前面的话:

      适应范围:《数据结构》复习总结系列适用于考研、期末考试、考前复习,小白新手

      本系列参考书目: 《数据结构:c语言版》(严蔚敏)

      关于写这个系列的原因:本人今年考研上岸,加上在校期间学习《数据结构》这门课时候,对数据结构有了好感,对这门课考试的考点把握还不错,所以不想荒废自己的知识,就计划用这种方式总结起来。如果有理解不到位的地方,欢迎在评论指出。我会尽量把知识点讲清楚后,按照考点进行总结。这个系列计划按照知识点总结后+考点总结,同时配有少部分习题(之后会放出大量习题的链接,可以自行练习下载)的方式进行,我会加快更新速度,有不理解的问题也可以在评论提出,大家一起学习进步嗷。


第一章 绪论

    本章主要用于初步了解数据结构的基本内容。

    【考点】①关于数据结构相关概念和术语;

                  ②数据库三要素;

                  ③时间复杂度和空间复杂度

   【本章大纲】

【目录】

第一章 绪论

一、数据结构相关概念和术语

1.1相关概念术语

1.2 概念联系

二、数据结构三要素

2.1 数据的逻辑结构

2.2 数据的存储结构

2.3 数据的运算

三、效率的度量

3.1算法

3.2算法的效率


一、数据结构相关概念和术语

1.1相关概念术语

1.1.1 数据

   【 定义】数据是信息的载体,所有能被输入到计算机中,且能被计算机处理的符号的集合。

   【例 】在生活中的各种信息都可以作为数据来进行输入和处理,eg:图片、身份信息等。

1.1.2 数据元素和数据项

    【定义】数据元素是数据的基本单位常被作为一个整体来考虑。数据项是构成数据元素的最小单位,一个数据集元素可有多个数据项。

   【例】每一个学生信息就是数据元素,而学生信息中包含的姓名、年龄、所在班级等信息是数据项。

1.1.3 数据对象

    【定义】具有相同性质的数据元素的集合,是数据的一个子集

    【例】所有学生的信息可以作为一个数据对象。

1.1.4 数据类型

    【 定义】是一组值的集合和定义在该集合上的操作的总和。其中有原子类型(不可再分割)、

结构类型(多个原子类型值的组合)、抽象数据类型(ADT,数据模型以及定义在该数据模型上的

操作,可用数据对象、数据关系和相关操作的三元组来表示)。

1.1.5 数据结构

【定义】数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

【例】类似与学生表中,张三排在在李四的上面,这样相互的关系可称之为结构。

学生表
姓名年龄性别所属班级
张三23软件一班
李四22软件一班
王二23软件二班

1.2 概念联系

二、数据结构三要素

2.1 数据的逻辑结构

    【概念】 指数据元素之间的逻辑关系,它更贴近于现实关系来描述数据。它是独立于计算机的,与计算机内部如何存储是无关的

2.1.1 集合

     数据元素同属一个集合,单个数据元素之间没有任何关系,如图所示。

2.1.2 线性结构

     数据元素之间是一对一的关系,如图所示。

2.1.3 树形结构

     数据元素之间存在一对多的关系,如同树状,如图所示。

2.1.4 图形结构

     数据元素之间是多对多的关系,如图所示。

2.2 数据的存储结构

2.2.1 顺序存储

     顺序存储结构:把数据元素放到地址连续的存储单元里面,其数据间的逻辑关系和物理关系是一致的。

    【例】一维数组和图中a、b、c、d、e 五个元素在逻辑上是相邻的,那么把它存放到存储单元之中也让它相邻所示。

2.2.2 链式存储

     链式存储结构:是把数据元素存放在任意的存储单元里面,这组存储单元可以是连续的也可以是不连续的,如图所示。

2.2.3 索引存储

     索引存储;内存中不仅仅要存放每一个数据元素,还要建立一张索引表,其中有多个索引项,每一个索引项包括(关键字,该关键字对应的地址),如图所示。

2.2.4 散列存储(哈希存储)

散列存储:通过相应函数运算关键字,直接求得对应数据元素的地址

2.3 数据的运算

     数据运算包括运算的定义(针对逻辑结构)+实现(针对存储结构)

三、效率的度量

       数据结构中的算法好坏的评价往往是通过时间复杂度和空间复杂度进行度量的。那么什么是算法?什么是时间复杂度和空间复杂度呢?

3.1算法

3.1.1 什么是算法?

     指的是针对需要解决的问题求解步骤的一个描述,是指令的有限集合,其实现可以不是完整的代码。

3.1.2 算法的特性

      有穷性(可在有穷步骤和有穷时间内完成)、确定性(相同的输入只能得到相同的结果)、可行性(可通过现有的基本操作实现)、输入、输出

3.1.3 算法与程序的区别与联系

   ①区别

       在语言描述上不同:程序必须是用规定的程序设计语言来写,而算法很随意。

       在执行时间上不同:算法所描述的步骤一定是有限的,而程序可以无限地执行下去。

       两者定义不同:算法是对特定问题求解步骤的描述,它是有限序列指令;程序是实现预期目的而进行操作的一系列语句和指令。

    ②联系

       算法和程序都是指令的有限序列,但是程序是算法,而算法不一定是程序。

       程序=数据结构+算法。算法的主要目的在于为人们提供阅读了解所执行的工作流程与步骤。

       数据结构与算法要通过程序的实现,才能由计算机系统来执行。

3.2算法的效率

3.2.1 时间复杂度

     【概念】一个语句频度是指该语句在算法中被执行的次数而算法中所有的语句频度之和记作T(n),一般情况下,算法中最深层嵌套循环的语句频度与T(n)的数量级相同,因此通常采用算法中的基本运算的频度f(n)来分析算法时间复杂度,因此算法的时间复杂度记为T(n)=O(f(n)),而O的含义为T(n)的数量级

   【常见的渐近时间复杂度】

O(1)

注:O(1)是指算法语句频度为常数,简单可以理解为此算法无嵌套循环。

   【常见时间复杂度分类】

最好时间复杂度,指的是在最好情况下算法计算量可能达到的最小值

最坏时间复杂度,指的是最坏情况下,算法计算量可能达到的最大值。

平均时间复杂度,是指算法在等概率情况下出现时,算法计算量的期望运行时间。

  【例】

count=0;
for(i=1;i<=n;i++){
  for(j=1;j<=n;j++){
      count++;
      }       
}

  很容易看出来包含了两个并列的 for 循环,现在我们很容易就能判断出内层 for 循环的时间复杂度为 O(n);外层循环时间复杂度也为 O(n),因此此算法时间复杂度为 O(n2)。

3.2.2 空间复杂度

   【概念】空间复杂度S(n)定义为该算法所消耗的存储空间,它是问题规模n的函数。记为S(n)=O(g(n)),其中原地算法工作是指算法所需的辅助空间为常量,即O(1)

   【例】

 int fun(int n){
3  int k=10;
4  if(n==k)
5      return n;
6   else
7      return fun(++n);
8 }

递归实现,调用fun函数,每次都创建1个变量k。调用n次其空间复杂度O(n)。


关于绪论的知识大概就这么多啦,如果还有其他问题没有说清楚或有提问的东西,可以评论里告诉我,下一篇就是讲关于绪论可能会出的考点,以习题居多。

  • 17
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值