1 基本概念和术语
-
数据(Data)——对客观事物的符号表示,在计算机科学中指能输入到计算机中并被计算机程序处理的符号的总成。数据的含义极广,如图像、声音等都可以通过编码而归之于数据的范畴。
-
数据元素(Data Element)——数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
-
数据项(Data Item)——数据项是数据的不可分割的最小单位。
-
数据对象(Data Object)——性质相同的数据元素的集合,是数据的一个子集。
-
数据结构(Data Structure)——相互之间存在的一种或多种特定关系的数据元素的集合。
-
物理结构(存储结构)——数据结构在计算机中的表示,包括数据元素的表示和关系的表示。计算机中表示信息的最小单位是位(bit),可以使用多个位形成的位串表示一个数据元素,通常称这个位串为元素(element)或结点(node)。
-
数据类型(Data Type)——刻画操作对象的特性,是一个值的集合和定义在这个值集上的一组操作的总称。
2 四种数据结构
-
图(网)状结构——结构中的数据元素之间存在多对多的关系
3 数据结构的形式定义
Data_Structure = (D,S)
D——数据元素的有限集
S——D上关系的有限集
4 算法及评价
算法是解决某一特定类型问题的有限运算序列。
算法的时间复杂度是衡量一个算法好坏的重要指标。
时间复杂度是指算法中所包含简单操作执行次数的数量级。
语句的频度是需要精确计算算法中某一语句执行的次数。
算法花费的时间与算法中语句的执行次数成正比,一个算法中的语句执行次数称为语句频度或时间频度,记为T(n),也叫做问题规模。一般情况下,算法中基操作重复执行的次数是问题规模n的某个函数,用T(n)表示。
按数量级递增排列,常见的时间复杂度有:
常数阶O(1)
对数阶O(log2n)
线性阶O(n)
线性对数阶O(nlog2n)
平方阶O(N^2)
立方阶O(N^3)
例1:
for(i=0;i<n;i++){
y=y+1;
for(j=0;j<2*n;j++){
x++;
}
}
例1中的时间复杂度计算方法:
首先找最里层的循环,发现x++这段代码应该是循环次数最多的语句,根据两层循环的循环量计算x++语句的频度:
n * 2n = 2n^2 = O(n^2)
则该例子的时间复杂度为:O(n^2)
例2
int fn(int n){
if(n<=1){
return 1;
}
return n*fn(n-1);
}
例2中不存在循环标识for,while等,但是却是递归函数,本身就具备循环含义,这样一来,就需要把递归函数转化为循环函数之后再用循环标识来计算时间复杂度。
一般计算项为:
fn(n) = fn(n-1)*n;
可转化为:
int fn(n){
int i,s;
for(i=1;i<=n;i++){
s = s*i;
}
return s;
}
这样一来,就可以轻松得到时间复杂度为:O(n)
例3:
i=1;
while(i<=n){
i=i*2;
}
循环语句为i=i*2,一层循环,执行频度计算方法为:2^t<=n -> t = log2n
则该例子的时间复杂度为:log2n
例4:
for(int i=0;i<m;i++){
for(int j=0;j<n;j++)
a[i][j] = i*j;
}
此例子中,共两层循环,最里层语句为a[i][j] = i * j,执行频度为 m * n次,但是它的时间复杂度应改为O(n^2),因为这两个n是不一样的含义的,m*n中的n是此处实实在在执行次数的n,而O(n^2)表示的是问题规模的n,也就是说m * n中的m和n都演化为问题规模的n,从而得到O(n^2)这个结果。
计算时间复杂度的一般方法:
(1)找循环标识for,while的关键字
(2)如果是递归函数,先将递归函数化为循环函数
(3)找出每一层循环的循环量
(4)计算最里层循环语句的频度
(5)取数量级最大的最为时间复杂度
分享到:
相关推荐
在福师11秋《数据结构概论》在线作业一中,涉及的知识点广泛,涵盖了一些基本的数据结构和算法。 1. 循环队列的队空条件:在循环队列中,队空的判断条件是队头指针`front`等于队尾指针`rear`,所以正确答案是B。...
学习数据结构概论需要理论与实践相结合,通过编写代码实现数据结构和算法,加深理解和应用。同时,掌握如何利用数据结构解决实际问题,对于提升编程能力和解决问题的效率有着显著的作用。在自考过程中,要注重理解...
数据结构概论 数据结构是研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的关系和运算等的学科。数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容。 数据结构的分类 数据...
### 数据结构教程知识点详解 #### 一、基础知识概述 **数据**:指能够被计算机识别、存储和加工处理的信息...通过上述内容的学习,我们可以更好地理解和掌握数据结构的基础知识,为进一步深入学习打下坚实的基础。
13. 时间复杂度的分析方法包括大O记法和具体步数统计,通常采用大O记法。 程序段的时间复杂度分析: 1. 第一段程序的时间复杂度是O(n^2),因为外层循环n次,内层循环n-i次,总共执行n*(n-1)/2次。 2. 第二段程序的...
总之,《数据结构概论》所涉及的排序算法和查找算法是构建高效程序的基石。在计算机科学教育和实际工作中,都需要重视对这些基础概念的理解和应用。通过在《数据结构概论》在线作业二试卷中的探索与实践,学习者不仅...
例如,非线性结构中的图是多对多的关系,数据结构的逻辑结构与计算机无关,算法分析主要关注时间和空间复杂性,计算机算法是解决问题的有限运算序列,算法必须具备可行性、确定性和有穷性等特性。 简答题部分: 2. ...
数据结构概论及算法分析 数据结构是一门研究计算机中对象及其关系的学科。数据结构的定义为(K, R),其中 K 是数据元素的集合,R 是数据元素之间的关系。数据结构的学习可以分为两大部分:静态数据结构和动态数据...
本章概论介绍了数据结构的基本组成,帮助读者建立起对这一领域的初步理解。 1. 数据结构是一门研究非数值计算的程序设计问题中计算机的数据组织、它们之间的逻辑关系和运算的学科。数据结构不仅关注数据如何存储,...
一、数据结构概论 数据结构是计算机科学中一个重要的概念,由瑞士计算机科学家沃思提出:算法+数据结构=程序。数据结构是对数据的逻辑组织和物理存储方式,它涉及到数据元素之间的关系和数据的存储方式。 二、数据...
数据结构是计算机科学中的核心课程,它探讨了如何在计算机中高效地组织和管理数据,以便于进行各种操作。在自考02331数据结构的考试中,考生需要对这一领域的关键概念有深入的理解和掌握。以下是对各章节重要考点的...
综上所述,《数据结构》这门课程覆盖了数据的定义、数据结构的基本概念以及常见的线性表类型和操作等内容。学习这些基础知识对于理解和掌握更高级的数据结构和算法至关重要。通过学习不同的数据结构及其特性,学生...
在《数据结构概论》这门课程中,会涉及到多种数据结构的概念、特性以及相关的操作算法。以下是对试卷部分内容的知识点解析: 1. 路径的定义:在图论中,路径是指由顶点和相邻顶点序偶构成的边所形成的序列。这意味...
### 数据结构概论 #### 重要知识点解析 1. **数据结构的定义**: - 数据结构是研究非数值计算的程序设计问题中计算机操作对象以及它们之间的关系和操作。它主要包括数据的逻辑结构、存储结构及其基本操作。 2. *...
第一章概论,首先引入了数据结构的概念,它是数据的组织方式,包括数据的逻辑结构和物理结构。抽象数据类型(ADT)是数据结构的抽象形式,它只关注数据的操作而不涉及具体实现。算法是解决问题的步骤,其重要性在于...
1. 概论:介绍数据结构的基本概念,如数据、数据结构、算法、时间复杂度和空间复杂度等。 2. 线性表:包括顺序表和链表,是基础的线性数据结构。 3. 栈和队列:栈是“后进先出”的数据结构,队列则是“先进先出”,...
数据结构是计算机科学中至关重要的一个分支,它主要研究如何在计算机中组织和管理数据,以便高效地进行存储、检索和处理。数据结构是解决非数值计算问题的基础,它不仅涉及数据本身,还关注数据之间的关系和对这些...
1. **第一章 概论**:这部分通常介绍数据结构的基本概念,包括数据、数据类型、数据结构、算法和复杂度分析。它会为后续章节的学习打下基础,理解数据结构的重要性以及如何评估算法的效率。 2. **第二章 线性表**:...
1. 数据结构概论:理解数据、数据元素、抽象数据类型、数据结构(逻辑结构与物理结构)以及算法的基本概念,包括时间复杂度和空间复杂度。 2. 线性表:掌握顺序存储和链式存储两种方式,包括顺序表和单链表的操作...