数据结构1(概述)

第1章  概述

【例1-1】分析以下程序段的时间复杂度。

for(i=0;i<n;i++)

for(j=0;j<m;j++)

A[i][j]=0;

解:该程序段的时间复杂度为O(m*n)。

【例1-2】分析以下程序段的时间复杂度。

i=s=0;    ①

while(s<n)

{  i++;  ②

s+=i; ③

}

解:语句①为赋值语句,其执行次数为1次,所以其时间复杂度为O(1)。语句②和语句③构成while循环语句的循环体,它们的执行次数由循环控制条件中s与n的值确定。假定循环重复执行x次后结束, 则语句②和语句③各重复执行了x次。其时间复杂度按线性累加规则为O(x)。此时s与n满足关系式:s≥n,而s=1+2+3+…+x。所以有:1+2+3+…+x≥n,可以推出:

x=

x与n之间满足x=f(),所以循环体的时间复杂度为O(),语句①与循环体由线性累加规则得到该程序段的时间复杂度为O()。

【例1-3】分析以下程序段的时间复杂度。

i=1;  ①

while(i<=n)

i=2*i;  ②

解:其中语句①的执行次数是1,设语句②的执行次数为f(n),则有:。

得:T(n)=O()

【例1-4】有如下递归函数fact(n),分析其时间复杂度。

fact(int n)

{  if(n<=1)  

return(1);       ①

else

return(n*fact(n-1));   ②

}

解:设fact(n)的运行时间函数是T(n)。该函数中语句①的运行时间是O(1),语句②的运行时间是T(n-1)+ O(1),其中O(1)为常量运行时间。

由此可得fact(n)的时间复杂度为 O(n)。fact函数运行的次数,周期

习题1

一、单项选择题

1. 数据结构是指(1. A   )。

A.数据元素的组织形式        B.数据类型

C.数据存储结构              D.数据定义

2. 数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为(2. C )。

A.存储结构                 B.逻辑结构

C.链式存储结构             D.顺序存储结构

3. 树形结构是数据元素之间存在一种(3. D )。

A.一对一关系               B.多对多关系

C.多对一关系               D.一对多关系

4. 设语句x++的时间是单位时间,则以下语句的时间复杂度为(4. B)。

for(i=1; i<=n; i++)

for(j=i; j<=n; j++)

x++;

A.O(1)         B.O()           C.O(n)         D.O()

5. 算法分析的目的是(5. C、),算法分析的两个主要方面是(A)。

(1) A.找出数据结构的合理性           B.研究算法中的输入和输出关系

C.分析算法的效率以求改进         D.分析算法的易懂性和文档性

(2) A.空间复杂度和时间复杂度         B.正确性和简明性

C.可读性和文档性                 D.数据复杂性和程序复杂性

6. 计算机算法指的是( 6. C、),它具备输入,输出和( B)等五个特性。

(1) A.计算方法                       B.排序方法

C.解决问题的有限运算序列         D.调度方法

(2) A.可行性,可移植性和可扩充性     B.可行性,确定性和有穷性

C.确定性,有穷性和稳定性         D.易读性,稳定性和安全性

7. 数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要(  7. B)。

A.低           B.高            C.相同         D.不好说

8. 数据结构作为一门独立的课程出现是在(  8. D)年。

A.1946         B.1953         C.1964      D.1968

9. 数据结构只是研究数据的逻辑结构和物理结构,这种观点(9. B   )。

A.正确                         B.错误

C.前半句对,后半句错           D.前半句错,后半句对

10. 计算机内部数据处理的基本单位是(10. B  )。

A.数据          B.数据元素      C.数据项        D.数据库

二、填空题

1. 数据结构按逻辑结构可分为两大类,分别是______线性结构______­__和_______非线性结构__________。

2. 数据的逻辑结构有四种基本形态,分别是______集合__________、_____线性_____________、_______树___________和__________图________。

3. 线性结构反映结点间的逻辑关系是____一对一______________的,非线性结构反映结点间的逻辑关系是_______一对多或多对多___________的。

4. 一个算法的效率可分为_________时间_________效率和________空间__________效率。

5. 在树型结构中,树根结点没有_________前趋_________结点,其余每个结点的有且只有______________一____个前趋驱结点;叶子结点没有______后继____________结点;其余每个结点的后续结点可以__________多________。

6. 在图型结构中,每个结点的前趋结点数和后续结点数可以___________有多个_______。

7. 线性结构中元素之间存在______一对一____________关系;树型结构中元素之间存在________一对多__________关系;图型结构中元素之间存在_______多对多___________关系。

8. 下面程序段的时间复杂度是__________________。8. O()

for(i=0;i<n;i++)

for(j=0;j<n;j++)

A[i][j]=0;

9. 下面程序段的时间复杂度是__________________。9. O()

i=s=0;

while(s<n)     //靠这句

{  i++;

s+=i;

}

10. 下面程序段的时间复杂度是__________________。10. O()

s=0;

for(i=0;i<n;i++)

for(j=0;j<n;j++)

s+=B[i][j];

sum=s;

11. 下面程序段的时间复杂度是__________________。11. O(logn)

i=1;

while(i<=n)

i=i*3;

12. 衡量算法正确性的标准通常是________程序对于精心设计的典型合法数据输入能得出符合要求的结果。__________________。

13. 算法时间复杂度的分析通常有两种方法,即_______事前估计____和____事后统计_______的方法,通常我们对算法求时间复杂度时,采用后一种方法。

三、求下列程序段的时间复杂度。

1.  x=0;

for(i=1;i<n;i++)

for(j=i+1;j<=n;j++)

x++;

1. O()

2.  x=0;

for(i=1;i<n;i++)

for(j=1;j<=n-i;j++)

x++;

2. O()

3.  int i,j,k;

for(i=0;i<n;i++)

for(j=0;j<=n;j++)

{  c[i][j]=0;

for(k=0;k<n;k++)

c[i][j]=a[i][k]*b[k][j]

}

3. O(n)

4.   i=n-1;

while((i>=0)&&A[i]!=k))

j--;

return (i);

4. O(n)

5.   fact(n)

{  if(n<=1)

return (1);

else

return (n*fact(n-1));

}

5. O(n)

原文地址:https://www.cnblogs.com/-XiangBei-/p/11143496.html

时间: 2024-11-08 23:12:52

数据结构1(概述)的相关文章

【数据结构】数据结构的概述

一.概述 什么是数据结构:数据:由有限的符号(比如,"0"和"1",具有其自己的结构.操作.和相应的语义)组成的元素的集合.结构:元素之间的关系的集合.数据结构:信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作.它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构. 数据结构的构成: 数据结构分为逻辑上的数据结构和物理上的数据结构.逻辑上的数据结构反映成

数据结构——二叉树概述及其数组(顺序存储)表达法

树与二叉树: 什么是树呢?就是一个节点上会有很多分叉的数据结构.一般的,对于一棵树,我们需要的结构体为一个数据块和几个指针块,这就相当于很多个链表交织在了一起,实际上,链表也可以算是一种特殊的树,而我要讲的,也是一种特殊的树--二叉树. 对于树的各个节点,都有两个属性,称为度(degree),他的意思就是这个节点所拥有的子节点的数量.还有一个属性,称为深度(depth),指节点到根的距离. 什么是二叉树呢?顾名思义,就是度为二的树,它长这样: 如图所示,在链表中我们需要头(head),而在树中我

Java核心类库—数据结构—数据结构的概述

什么是数据结构: 数据结构是计算机存储.组织数据的方式. 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率.数据结构往往同高效的检索算法和索引技术相关. 常见的数据结构,数组(Array),栈(Stack),链表(Linked List),哈希表(Hash),队列(Queue),堆(Heap),图(Graph),树(Tree) java中集合框架其实就是数据结构的实现的封装,这里是模拟和实现数据结构. 不同的数据结构的操作性

浅谈Java中的数据结构(概述)

所谓数据结构,即是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成. 常见的数据结构包括:数组,栈,队列,链表,树,图,堆,散列表. 数组 (Array) 在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来.这些按序排列的同类数据元素的集合称为数组.在C语言中, 数组属于构造数据类型.一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型.因此按数组元素的类型不同,数组又可分为数值数组.字符数组.指针数组.结构数组等各种类

Java数据结构和算法(一):综述

数据结构和算法能起到什么作用? 数据结构是指数据在计算机内存空间或磁盘中的组织形式.数据结构包括数组.链表.栈.二叉树.哈希表等等.算法对这些结构中的数据进行各种处理,例如,查找一条特殊的数据项或对数据进行排序. 数据结构的概述 数据结构 优点 缺点 数组 插入快,如果知道下标,可以非常快地存取 查找慢,删除慢,大小固定 有序数组 比无序数组查找快 删除和插入慢,大小固定 栈 提供后进先出方式的存取 存取其他项很慢 队列 提供先进先出方式的存取 存取其他项很慢 链表 插入快,删除快 查找慢 二叉

树上数据结构——LCT

目录 树上数据结构--LCT 概述 基本概念 核心操作 其他操作 完整模板 树上数据结构--LCT 概述 LCT是一种强力的树上数据结构,支持以下操作: 链上求和 链上求最值 链上修改 子树修改 子树求和 换根 断开树上一条边 连接两个点,保证连接后仍然是一棵树. 基本概念 LCT是对树的实链剖分,即把所有边划分为实边和虚边 类似于重链剖分,每个点连向子节点中的实链至多只会有一条,把这条实边连向的儿子叫做实儿子 把一些实边连接的点构成的链叫做实链,容易发现实链之间没有共同点 需要注意的是一个不在

atitit.恒朋无纸化彩票系统数据接入通信协议

深圳市恒朋科技开发有限公司 Shenzhen Helper Science & Technology Co., Ltd. 恒朋无纸化彩票系统数据接入通信协议 文档版本历史 内容目录 恒朋无纸化彩票系统数据接入通信协议............................................1 文档版本历史..................................................................2 内容目录..................

Java 前后端 统一返回数据格式

目录 1 概述 2 状态码定义 3 统一返回数据结构 1 概述 现在前后端交互,基本上都有统一的返回数据结构,因此我特地总结了相关知识,形成这篇博客. 2 状态码定义 /** * description: 基本返回状态码 */ public enum RespBasicCode { /** * 4xx 客户端异常 5xx服务器异常 */ SUCCESS("200", "成功"), PARAMETER_ERROR("400", "参数异常

python爬虫---数据分析三剑客之: Numpy

数据分析三剑客之: Numpy 一丶Numpy的使用 ? numpy 是Python语言的一个扩展程序库,支持大维度的数组和矩阵运算.也支持针对数组运算提供大量的数学函数库 创建ndarray # 1.使用np.array() 创建一维或多维数据 import numpy as np arr = np.array([1,2,3,4,5]) # 一维 arr = np.array([[1,2,3],[4,5,6]])# 二维 ### 注意元素类型: # 1. numpy默认ndarray的所有元素

数据结构-概述(1)

数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率. 数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关. 通常有下列四类基本的结构: ⑴集合结构.该结构的数据元素间的关系是"属于同一个集合". ⑵线性结构.该结构的数据元素之间存在着一对一的关系. ⑶树型结构.该结构的数据元素之间存在着一对多的关系