判断题

1、算法分析的两个主要方面是时间复杂度和空间复杂度的分析。 T

2、在任何情况下,时间复杂度为O(n^2) 的算法比时间复杂度为O(n*logn)的算法所花费的时间都长。 F

    O(n^2)for (i = 0; i < n; i++){for (j = 0; j < n; j++){}}O(n*logn)for (i = 0; i < n; i++){for (j = 0; j < n; j*=a)//a小于2 当log的底小于2时,O(n^2)的算法比O(n*logn)的时间短。{}}

3、O(n^2),O(1+2+···+n) 对应的算法时间复杂度相同。 T

后者时间复杂度为n(n+1)/2,最高阶一样。

4、对于某些算法,随着问题规模的扩大,所花的时间不一定单调增加。 T

O(1)常量复杂度的算法所花的时间与问题规模无关。

5、算法可以没有输入,但是必须有输出。 T

算法必须满足5个重要特性:有穷性,确定性,可行性,输入,输出。

一个算法可以有0个或多个输入,而要有一个或多个输出。

6、数据项是数据的最小单位。 T

7、数据元素是数据的最小单位。 F、

数据元素是数据的基本单位。

8、数据结构概念包括数据之间的逻辑结构、数据在计算机中的存储方式和数据的运算三个方面。 T

即逻辑结构,存储结构,算法

9、数据元素可以由类型互不相同的数据项构成。 T

数据元素是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、记录等。数据元素用于完整地描述一个对象。

如这一行数据即为一个数据元素。

学号 姓名 性别 籍贯 专业
060214201 杨阳 安徽 计算机科学与技术

10、算法的优劣与算法描述语言无关,但与所用计算机有关。    F

算法的优劣是与算法自身的时间复杂度和空间复杂度相关的,与语言无关,也与计算机无关。

课本内容:评价算法优劣的基本标准:正确性,可读性,健壮性,高效性。

高效性即时间和空间两个方面。

选择题

1、给定N×N的二维数组A,则在不改变数组的前提下,查找最大元素的时间复杂度是:

A O(N^2)
B O(NlogN)
C O(N)
D (N2logN)
 //我写的例子,没细看,应该不会有问题,的吧?int A[3][3] = { { 2,4,5 }, { 1,3,6 },{3,8,9} };int max = A[0][0];for (i = 0; i < n; i++){for (j = 0; j < n; j++){if (A[i][j] > max){max = A[i][j];}}}

2、以下数据结构中,( )是非线性数据结构。

A
B 字符串
C 队列
D

线性结构:数据元素之间存在一对一的关系。字符串,队列,栈都是线性结构。

非线性结构:不是一对一的关系。(笑)树是一对多的关系。

3、下面程序段的时间复杂度是()。

x=90;
y=100;
while(y>0)if(x>100){ x=x-10; y--; }else x++;
A O(1)
B O(N)
C O()
D O()

循环次数是常量,所以是常量级的时间复杂度。

4、下面代码段的时间复杂度是()。

for ( i=0; i<n; i++ )for ( j=0; j<m; j++ )a[i][j]=0;
A O(1)
B O(mn)
C O()
D O()

循环次数由m和n决定,两者之间是乘积关系,所以时间复杂度是O(mn)。

5、下面代码段的时间复杂度是()。

s=0;
for ( i=0; i<n; i++ )for( j=0; j<n; j++ )s+=B[i][j];
sum=s;
A O(1)
B O(log2​n)
C O(n)
D O()

两层循环都是n次,次数为n*n。简单)

6、数据的()包括集合、线性结构、树形结构和图形结构四种基本类型。

A 存储结构
B 逻辑结构
C 基本运算
D 算法描述

逻辑结构:数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的,因此,数据的逻辑结构可以看作从具体问题中抽象出来的数学模型。

数据的逻辑结构有两个要素:一是数据元素;二是关系。数据元素的含义如前所述,关系是指数据元素的逻辑关系。根据数据元素之间的不同特性,数据的逻辑结构通常有4类基本逻辑结构,它们的复杂程度依次递进:集合结构,线性结构,树结构,图结构或网状结构。

存储结构:数据对象在计算机中的存储表示称为数据的存储结构,也称为物理结构。把数据对象存储到计算机时,通常要求既要存储各数据元素的数据,又要存储数据元素之间的逻辑关系,数据元素在计算机内用一个节点来表示。数据元素在计算机中有两种基本的存储结构,分别是顺序存储结构和链式存储结构。

(抄的书上内容。笑)

7、下面的程序段违反了算法的()原则。

void sam()
{  int n=2;while (n%2==0)    n+=2;printf(“%d”,n);
}
A 有穷性
B 确定性
C 可行性
D 健壮性

算法必须满足5个重要特性:有穷性,确定性,可行性,输入,输出。

题中n=2进入循环每次+2,无法结束循环,所以违反了有穷性。

8、下列关于数据的逻辑结构的叙述中,()是正确的。

A 数据的逻辑结构是数据元素间关系的描述
B 数据的逻辑结构反映了数据在计算机中的存储方式
C 数据的逻辑结构分为顺序结构和链式结构
D 数据的逻辑结构分为静态结构和动态结构

逻辑结构:数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的,因此,数据的逻辑结构可以看作从具体问题中抽象出来的数学模型。数据的逻辑结构有两个要素:一是数据元素;二是关系。

(所以就是数据元素和它们之间的关系嘛)

9、在数据结构中,从逻辑上可以把数据结构分成()。

A 动态结构和静态结构
B 紧凑结构和非紧凑结构
C 线性结构和非线性结构
D 内部结构和外部结构

数据结构有四种基本结构,即集合结构,线性结构,树结构,图结构或网状结构。线性结构自成一类,另外三种为非线性结构。

10、计算机算法必须具备输入、输出和()等五个特性。

A 可行性、可移植性和可扩充性
B 可行性、确定性和有穷性
C 确定性、有穷性和稳定性
D 易读性、稳定性和安全性

算法必须满足5个重要特性:有穷性,确定性,可行性,输入,输出。

11、在数据结构中,与所使用的计算机无关的数据结构是()。

A 逻辑结构
B 存储结构
C 逻辑结构和存储结构
D 物理结构

逻辑结构:数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的,因此,数据的逻辑结构可以看作从具体问题中抽象出来的数学模型。

12、下面程序的时间复杂度为()。

for(i = 0; i < m; i++)for(j = 0; j < t; j++)c[i][j] = 0;
for(i = 0; i < m; i++)for(j = 0; j < t; j++)for(k = 0; k < n; k++)c[i][j] = c[i][j]+a[i][k] * b[k][j];
A O(m × n × t)
B O(m + n + t)
C O(m + n × t)
D O(m × t + n)

上边 m*t ,下边 m*n*t。取大的。

13、下列程序段的时间复杂度为()。

i = 1; k = 0; n = 100;
do{k = k + 10 * i;i = i++;
}while(i != n)
A O(1)
B O(n)
C O(i)
D O(i × n)

i 和 n 都是常数。

14、算法分析的目的是( )。

A 找出数据结构的合理性
B 研究算法中的输入和输出的关系
C 分析算法的效率以求改进
D

分析算法的可读性和简明性

算法分析即是主要从时间复杂度和空间复杂度分析算法,而从这两方面分析只能是为了优化算法加快运算速度,提升效率。(我的想法)

15、算法的时间复杂度与( )有关。

A 问题规模
B 计算机硬件的运行速度
C 源程序的长度
D 编译后执行程序的质量

最主要跟问题规模有关,不考虑计算机的软硬件等环境因素的话。

16、某算法的时间复杂度是O(),表明该算法的( )。

A 问题规模是
B 问题规模与成正比
C 执行时间等于
D 执行时间与成正比

一般情况下,算法中基本语句重复执行的次数是问题规模n的某个函数f(n),算法的时间量度基座:

T(n)=O(F(n))

它表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。

17、下列代码的时间复杂度是:

if ( A > B ) {for ( i=0; i<N*N/100; i++ )for ( j=N*N; j>i; j-- )A += B;
}
else {for ( i=0; i<N*2; i++ )for ( j=N*3; j>i; j-- )A += B;
}
A O()
B O()
C O()
D O()

上边是,下边是,取大的那个就好。

18、Choose the time complexity of the following code:

x=0;for(i=0;i<n;i++)for(j=0;j<i*i;j++)x++;
A O()
B O()
C O()
D O()

外层n,内层,问题规模即是

19、下列代码的时间复杂度是:

for(i=0; i<n; i++)for(j=i; j>0; j/=2)printf(“%d\n”, j);
A O(N×i)
B O(N)
C O()
D O(NlogN)

外层循环到n,内层循环次数是 ,j的变化是从0到n(一个极大的数)即循环次数n = 

两者相乘即为 D (笑,不太会讲,大概这样)

20、要判断一个整数N(>10)是否素数,我们需要检查3到之间是否存在奇数可以整除N。则这个算法的时间复杂度是:

A O(N/2)
B O()
C O(logN)
D O(0.5logN)

循环从3逐个到,所以时间复杂度是O()

编程题

7-1 买买买 (12 分)

刚过完双十一,马上又来双十二, LC 向来人*钱多,他现在有 A 元钱,他想买 B 元一瓶的快乐水。老板还给了他九折的优惠,请问 LC 最多能买多少瓶快乐水

输入格式:

在一行中给出2个两个正整数 A,B(1<=A<=10^6,1<=B<=10)。

输出格式:

在一行中输出 LC 最多能买的快乐水的数量。

输入样例:

90 10

输出样例:

10
#include<iostream>
using namespace std;int main()
{int A, B;cin >> A >> B;cout << (int)(A / (B * 0.9)) << endl;//int 与 float 运算 隐式转换成了 float 类型的数据,所以重新转回 int 类型。
}

7-2 点钞 (12 分)

Bear_2 有一个小金库,里面有 n 张钞票。现在他想按顺序点钞,如果点到的这张钞票之前有过同等金额,就输出 ∗ ,否则输出这张钞票的金额。

保证,钞票的金额不超过 10^3 。

输入格式:

第一行中给出1个正整数 n(1<=n<=10^3) 代表金库里有 n 张钞票。

第二行给出 n 个正整数,第 i 个整数 Xi​ 代表第 i 张钞票的金额。

输出格式:

在一行内,对每张钞票输出对应的金额,如果之前没有过同样金额的钞票;否则输出 ∗

注意,两个输出中间用空格隔开,行末不要有空格

输入样例:

5
1 2 1 3 2

输出样例:

1 2 * 3 *
#include<iostream>
using namespace std;int main()
{int number,i;int money ;int a[1001] = {0};
//题中说明了金额上限,所以直接可以声明数组的大小,以下标存值
//0,1分别代表没有当前面值的钞票和有当前面值的钞票。cin >> number;//输入数量for (i = 0; i < number; i++){cin >>  money;//输入面值if (a[money])//初始为0,所以不输出 *{cout << "*";}else{cout << money;}if (i != number - 1){cout << " " ;}a[money] = 1;//记录当前面值已存在}
}

7-3 无情的点钞机 (12 分)

总所周知 LC 是集训队买单最快的人,现在 LC 有 n 张面额从 1 到 10 的钞票,他想请你帮他算算 1 到 10 金额的钞票分别有多少张。

输入格式:

第一行中给出1个正整数 n(1<=n<=10^3) 代表金库里有 n 张钞票。

第二行给出 n 个正整数,第 i 个整数 Xi​ 代表第 i 张钞票的金额。

输出格式:

在一行内输出 10 个整数,第 i 个整数代表金额为 i 的钞票的数量,两个数之间用一个空格隔开,注意行末不要有空格

输入样例:

5
1 2 1 3 2

输出样例:

2 2 1 0 0 0 0 0 0 0
#include <iostream>
using namespace std;
int main()
{int number, i;int money;int a[1001] = { 0 };//基本等同上一题cin >> number;for (i = 0; i < number; i++){cin >> money;if (a[money])//面值已存在的话记录+1{a[money] ++;}else//面值先前不存在的话更改状态为存在{a[money] = 1;}}for (i = 1; i < 11; i++){cout << a[i] ;if (i != 10){cout << " ";}}
}

7-4 数组元素的目标和 (14 分)

知识点:双指针

给定两个升序排序的有序数组 A 和 B,以及一个目标值 x。

数组下标从 0 开始。

请你求出满足 A[i]+B[j]=x 的数对 (i,j)。

数组长度不超过 10^5。 同一数组内元素各不相同。 1≤数组元素≤10^9

输入格式:

第一行包含三个整数 n,m,x,分别表示 A 的长度,B 的长度以及目标值 x。

第二行包含 n 个整数,表示数组 A。

第三行包含 m 个整数,表示数组 B。

输出格式:

共一行,包含两个整数 i 和 j。

输入样例:

4 5 6
1 2 4 7
3 4 6 8 9

输出样例:

1 1
#include <iostream>
using namespace std;
int main()
{int n, m, x;cin >> n >> m >> x;int *A = new int[n];int *B = new int[m];for (int i = 0; i < n; i++){cin >> A[i];}for (int i = 0; i < m; i++){cin >> B[i];}for(int i = 0, j = m - 1; i < n; i ++ )   {   while(j >= 0 && A[i] + B[j] > x)  j -- ;  if(j >= 0 && A[i] + B[j] == x)  cout << i << " " << j <<endl;}}

两个升序排列的数组
A数组从最小开始遍历,B数组从最大开始遍历

因为是升序排列,所以两者之和与目标值的比较关系是按照,大于,等于,小于,来变化的

当两者之和大于目标值的时候,B数组指针向左移动,然后进行判断

当B数组由于移动一位后,变化的数字差值过大,导致两者之和小于目标值,那么A数组的数字向右移动一位。

当两者之和等于目标值时,输出 i 和 j 的值。

在此种方法下,A数组最多遍历到 i ,B数组最多遍历 j ,在A数组的取值右移的时候,B数组并没有重新开始遍历,所以并不是常见的双循环的,而是 i + j,即时间复杂度时O(n).

其实暴力解法也能解,但是时间测试不通过,会超时。

(PTA)数据结构(作业)1、基本概念相关推荐

  1. PTA实验作业-01

    一.PTA实验作业 本周要求挑3道题目写设计思路.调试过程.设计思路用伪代码描述.题目选做要求: 顺序表选择一题(6-2,6-3,7-1选一题),代码必须用顺序结构抽象数据类型封装 单链表选择一题(6 ...

  2. PTA数据结构与算法题目集6-4 6-3 6-8

    PTA数据结构与算法题目集(中文) 6-4 链式表的按序号查找 ElementType FindKth( List L, int K ){int index = 0;while(L){++index; ...

  3. PTA数据结构与算法题目集 6-9 二叉树的遍历

    PTA数据结构与算法题目集(中文) 6-9 二叉树的遍历 void InorderTraversal( BinTree BT ){if(BT==NULL)return;if(BT->Left){ ...

  4. PTA数据结构期末练习 - 单选题、判断题

    PTA选择.判断题答案搜索 PTA排序易错题 输入若干英文单词,对这些单词按长度从小到大排序后输出.如果长度相同,按照输入的顺序不变 https://www.it610.com/article/129 ...

  5. 数据结构作业之输出树的每一条从根节点到叶节点的路径

    数据结构作业,输出树的每一条从根节点到叶节点的路径 #include <stdio.h> #include <stdlib.h> typedef struct tree {ch ...

  6. MOOC浙大数据结构课后题记录——PTA数据结构题目集(全)

    目录 第一周--最大子列和算法.二分查找 01-复杂度1 最大子列和问题 (20分) 01-复杂度2 Maximum Subsequence Sum (25分) 01-复杂度3 二分查找 (20分) ...

  7. Python数据分析实战【第三章】2.5-Pandas数据结构Dataframe:基本概念及创建【python】

    [课程2.5] Pandas数据结构Dataframe:基本概念及创建 "二维数组"Dataframe:是一个表格型的数据结构,包含一组有序的列,其列的值类型可以是数值.字符串.布 ...

  8. 数据结构作业9(清览题库)

    数据结构作业9(清览题库) 主要涉及内容为:拓扑排序,关键路径,内排序等

  9. 数据结构之树的概念以及结构

    数据结构之树的概念以及结构 1.树的概念 树是一种非线性的数据结构,是由n(n>=0)有限节点的组成的一个具有线性关系的集合. 叫树的原因是因为它看起来像是一颗倒挂的树,只不过是根朝上,叶朝下 ...

  10. Revit(8)-数据结构-类别、族概念

    系列文章目录 Revit开发中异常记录 Revit (1) - CAD - 获取图层 Revit (2) - CAD - 获取CAD文字 Revit (3) - 二开 -创建柱子 Revit (4) ...

最新文章

  1. android surface 平板,Surface平板能升级安卓4.0吗
  2. 使用JavaScript变量需要注意哪些语法细节?
  3. python建模分析实操_城市公交站点设置优化模型-基于Python
  4. java ee项目部署到服务器上405,HTTP状态405 - HTTP POST方法不受此URL支持:采用的GlassFish服务器的NetBeans...
  5. Android pid uid
  6. Queue 输出数据
  7. GlassFish下手动部署JSF程序
  8. 【Vijos1180】选课
  9. Data source rejected establishment of connection, message from server: Too many connections
  10. gsp认证计算机系统检查内容,版GSP认证之附录计算机系统检查项目PPT课件.ppt
  11. 2级c语言题库及答案,2019-C语言二级考试题库(含答案)
  12. Python——伪随机数生成器
  13. 设置Windows控制台颜色
  14. 自制原版mega2560(mega16U2 and mega2560 BootLoader 恢复再造)
  15. 电脑卡顿?性能不足?一套连招榨干你的电脑!
  16. MobaXterm在4K屏幕下的兼容性设置
  17. RestTemplate封装
  18. 高并发之数十万甚至百万级qps吞吐量方案
  19. 数学建模笔记(十一):统计模型(MATLAB计算,函数参数解释待补充)
  20. NC14745 Hungry!

热门文章

  1. 【干货】一文详解计算机视觉的广泛应用:网络压缩、视觉问答、可视化、风格迁移等
  2. 2021-7-19-OpenStack基础知识学习
  3. Spring Festival
  4. 树莓派3 搭建tensorflow并进行物体识别
  5. Clear Type之父谈阅读革命(转载)
  6. [不好分类]关于河北盛华化工有限公司附近爆炸原因猜测
  7. 误删c盘user文件夹后,如何恢复文件
  8. 黑客大神用什么杀毒? Windows 自带的就够, 只是加了亿点微小的强化
  9. K8S使用habor作为私有仓库
  10. 什么笔记本学计算机二级,计算机二级Office