数据结构绪论学习要点

概述

本章介绍数据结构和算法的基本概念,以及算法分析的基本方法,是学习后续各章的基础。本章知识点的组织结构如下图所示:
在这里插入图片描述

重点/难点/要点

本章的重点是

  1. 数据结构的基本概念;
  2. 数据的逻辑结构、存储结构以及二者之间的关系;
  3. 算法及特性;
  4. 大0记号的表示。

本章的难点是

  1. 抽象数据类型的定义和使用;
  2. 算法的时间复杂度分析。

本章要抓住两条主线,一条主线是数据结构,包括数据结构的研究对象及相关概念,另一条主线是算法,包括算法的相关概念、描述方法以及时间复杂度的分析方法。
数据结构部分,从问题的求解过程入手,理解“数据结构+算法=程序”;注意强调数据结构和程序设计之间的关系。数据结构部分的核心概念是数据元素,注意通过具体实例引申数据元素之间的关系;数据结构部分的重要概念是数据结构,要抓住两个方面:逻辑结构和存储结构,并注意把握二者之间的关系。
算法部分,要以算法的概念和特性为基本点,并在以后的教学中注意应用算法的特性,不要孤立地学习概念,注意概念的引申和应用;对于算法时间性能的分析,要将注意力集中在增长率上,即基本语句执行次数的数量级,强调三个要点:基本语句、执行次数、数量级,算法时间性能分析的结果是用大O记号表示的数量级。
最后,强调数据结构和算法分析都是针对大量数据,即大量数据的组织、大量数据的处理效率。随着计算机运算速度的增长,对于能够处理大量数据的快速程序的需求也变得日益强烈。

知识点整理

  1. 程序设计的一般过程是“问题→想法→算法→程序”,其实质是数据表示和数据处理。数据表示的主要任务是从问题抽象出数据模型,并将该模型从计算机机外表示转换为计算机机内表示;数据处理的主要任务是对问题的求解方法进行抽象描述,即设计算法。
  2. 数据结构是研究非数值问题中计算机的操作对象以及它们之间关系和操作的学科。
  3. 数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。数据元素是讨论数据结构时涉及的最小数据单位,其中的数据项一般不予考虑。
  4. 数据结构是指相互之间存在一定关系的数据元素的集合。按照视点的不同,数据结构分为逻辑结构和存储结构。数据的逻辑结构是指数据元素之间逻辑关系的整体,数据的存储结构是数据及其逻辑结构在计算机中的表示。
  5. 根据数据元素之间逻辑关系的不同,数据结构分为四类:集合、线性结构、树结构、图结构。
  6. 数据结构通常有两种存储方法:顺序存储结构和链接存储结构。
  7. 抽象数据类型是一个数据模型(即数据结构)以及定义在该结构上的一组操作的总称。
  8. 算法是对特定间题求解步骤的一种描述,是指令的有限序列。算法必须满足下列五个重要特性:输入、输出、有穷性、确定性、可行性。
  9. 一个“好”算法除了要满足算法的五大特性外,还要具备下列特性:正确性、健壮性、简单性、抽象分级、高效性等。
  10. 常用的描述算法的方法有自然语言、流程图、程序设计语言和伪代码等,其中,伪代码是比较合适的描述算法的方法,被称为“算法语言”或“第一语言”。
  11. 度量一个算法的效率有两种方法:事后统计的方法和事前分析估算的方法。
  12. 撇开与计算机软、硬件有关的因素,影响算法时间代价的最主要因素是问题规模。问题规模是指输入量的多少,一般来说,它可以从问题描述中得到。
  13. 为了客观地反映一个算法的执行时间,可以用算法中基本语句的执行次数来度量算法的工作量。基本语句是执行次数与整个算法的执行次数成正比的语句。
  14. 时间复杂度通常用大O记号表示,这种方法实际上是一种估算方法。
  15. 求解算法的时间复杂度的简便方法是:找出所有语句中执行次数最多的那条句作为基本语句,计算基本语句执行次数的数量级并放入大O记号中。

练习

问题抽象与程序设计
人和计算机有效交流的途径是(A)。
A.程序 B.语言 C.语句 D.算法
程序设计的关键是(C)。
A.数据结构和算法 B.数据表示和数据处理 C.A和B都对
本课程讨论所有问题的数据组织和处理。(×)
程序设计过程中运用的思维是(D)。
A.逻辑思维 B.抽象思维 C.形象思维 D.计算思维

数据结构基本概念
逻辑结构与数据元素本身的内容和形式无关。(√)
基于某种逻辑结构之上的基本操作,其实现是唯一的。(×)
理论上讲,存储结构与程序设计语言无关。(×)
讨论数据结构时的着眼点是(B)。
A.数据 B.数据元素 C.数据对象 D.数据项
编译程序处理的数据是(C)。
A.语言B.语句C.源程序D.字符串
按照视点的不同,数据结构分为逻辑结构和存储结构,其中的视点指的是(A)。
A.内存 B.外存 C.文件 D.问题

算法基本概念
流程图是最常用的描述算法的方法。(×)
同程序设计语言一样,伪代码也有国际标准。(×)
算法的确定性要求对于相同的输入,一定会得到相同的输出。(√)
算法必须满足正确性,否则就没有存在的价值。(×)
(D)被称为“算法语言”。
A.自然语言 B.流程图 C.程序设计语言 D.伪代码

算法分析
算法的时间复杂度都要通过算法中的基本语句的执行次数来确定。(×)
算法的时间复杂度是对算法所消耗资源的一种精确计算。(×)
算法的空间复杂度指的是输入/输出数据占用的空间以及执行算法的辅助空间。(×)
就地算法或原地算法指的是算法在执行过程中不需要辅助空间。(×)
以下程序段中,问题规模是(H),基本语句是(C),时间复杂度是(G)。
A.(1)
B.(2)
C.(3)
D.(4)
E.O( n 2 n^2 n2)
F.O( M 2 M^2 M2)
G.O(m×n)
H.O(m×n/2)

(1)for(i=0;i<m;i++)
{
    
    
(2)	for(j=0;j<n/2;j++)
(3)		cout<<data[i][j]; 
(4)	cout<<endl;
}

参考资料:《数据结构(从概念到C++实现)》清华大学出版社,王红梅

猜你喜欢

转载自blog.csdn.net/oldmao_2001/article/details/109045357