数据结构试题 16-17

news2024/10/23 14:31:30

先这样吧,,专业课不是统考,我发现每年的卷子风格都不太一样,侧重点也不一样。以及21的和16的发生了很大的改变。等明年1月再看看吧

那就先over啦

数据结构撒花!!!!!!!!!

等我7.4开电子技术基础!!! 




下面程序的时间复杂为
for(i=1,s=0; i<=n; i++) {       n
t=1;
for(j=1;j<=i;j++)        S = n*(n+1)/2
t=t*j;                    S = n*(n+1)/2
s=s+t;                    n      }

该程序的时间复杂度分析如下:

外层循环是以 `i` 为变量,从 1 遍历到 `n`,因此外层循环执行了 `n` 次。

内层循环是以 `j` 为变量,每次外层循环中,`j` 会从 1 遍历到当前 `i` 的值。这意味着:

- 当 `i=1` 时,内层循环执行 1 次,
- 当 `i=2` 时,内层循环执行 2 次,
- ...
- 当 `i=n` 时,内层循环执行 `n` 次。

因此,内层循环总共执行的次数是 `1 + 2 + 3 + ... + n`,这是一个等差数列求和的问题,其和可以用公式计算:`S = n*(n+1)/2`。

内层循环中的操作 `t=t*j` 是常数时间操作,但需要执行 `S = n*(n+1)/2` 次,

而外层循环中的 `s=s+t` 同样是常数时间操作,执行了 `n` 次。

因此,整体的时间复杂度由最内层循环主导,即 `O(n*(n+1)/2)`。在大O表示法中,可以忽略低阶项和系数,所以最终的时间复杂度为 `O(n^2)`。




数据结构合集 - 二叉搜索树(二叉排序树)(二叉查找树)_哔哩哔哩_bilibili 

二叉搜索树(二叉排序树)(二叉查找树)(BST)

所有的父节点来说,它的左孩子一定小于右孩子

极端情况,采用平衡二叉树的调整 的方法

数据结构笔记20-37-CSDN博客

 




 




 




 

实际上,(A) 快速排序、(B) 堆排序、(C) 归并排序 的时间复杂度在最坏情况和平均情况下是不同的:

  • 快速排序:它的平均时间复杂度是O(n log n),这是非常优秀的。但在最坏情况下(例如已经排序好的数组),时间复杂度会退化到O(n^2)。快速排序不需要额外的存储空间(如果采用原地排序的话),但其性能依赖于pivot的选择。

  • 堆排序:堆排序的时间复杂度在最好、最坏和平均情况下均为O(n log n)。它首先通过构建一个最大堆或最小堆(本题中为找最小元素,故构建最小堆),然后不断移除堆顶元素并重新调整堆,直到找到所需的最小元素。堆排序需要一个额外的O(1)空间复杂度用于交换元素,但主要操作还是在原数组上进行。

  • 归并排序:归并排序的时间复杂度在所有情况下都是O(n log n),是非常稳定的排序算法。但它需要O(n)的额外空间来合并子数组,这使得它在空间效率上不如堆排序和快速排序(如果不考虑快速排序的最坏情况)。

对于题目要求的“选出其中最小的10个记录关键字”,堆排序(B)的优势在于它可以直接通过调整堆来高效地获取顶部的元素,而不需要完全排序整个数组。相比快速排序和归并排序,堆排序在这个特定任务上的效率更高,因为它天然支持快速访问顶部元素(即最小元素),并且不需要像快速排序那样担心最坏情况性能退化,也不像归并排序那样需要大量额外空间。因此,选项B是最合适的选择。




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1843223.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PTA - 函数的定义与调用

编写一个名为collatz()的函数,它有一个名为number的参数&#xff1a; 如果number是偶数,那么collatz()就打印number加上2如果number是奇数,那么collatz()就打印number乘以2 函数接口定义&#xff1a; def collatz(number)裁判测试程序样例&#xff1a; /* 请在这里填写答案…

Windows10 + fydeOS双系统!简单几步完成

前言 最近发现小伙伴对于fydeOS热情是真的不减&#xff0c;啧啧啧……今天闲来无事&#xff0c;就来讲讲双系统Windows10 fydeOS的安装方法吧&#xff01; Windows10 FydeOS双系统安装过程其实很简单&#xff0c;不过要建议先安装好Windows10系统。 虽然先安装好fydeOS之后…

FineReport报表

一、报表类型 模板设计是 FineReport 学习过程中的主要难题所在&#xff0c;FineReport 模板设计主要包括普通报表、聚合报表、决策报表三种设计类型。 官网&#xff1a; ‘‘报表类型简介- FineReport帮助文档 - 全面的报表使用教程和学习资料 ‘’ 二、聚合报表 2-1 介绍…

生育是家庭和个人的重要的选择

生育是个人和家庭的重要选择&#xff0c;而国家对于生育政策的制定应该综合考虑多种因素&#xff0c;包括人口结构、经济发展和社会稳定等。同时&#xff0c;我们也应该认识到&#xff0c;男女不应该成为决定一个人是否能够生育的因素。男女在生育中扮演着不同的角色&#xff0…

java学习--集合(大写一.1)

看尚硅谷视频做的笔记 1.集合框架概述 1.1生活中的容器 首先知道集合是来解决什么问题的&#xff1f; 1.1.1内存层面需要针对于多个数据进行存储&#xff0c;此时&#xff0c;可以考虑的容器有&#xff1a;数组、集合类 对于内存层面的来说&#xff0c;断电后数据就不复存…

玩转Matlab-Simscape(初级)- 10 - 基于COMSOLSimulink 凸轮机构的控制仿真

** 玩转Matlab-Simscape&#xff08;初级&#xff09;- 10 - 基于COMSOL&Simulink 凸轮机构的控制仿真 ** 目录 玩转Matlab-Simscape&#xff08;初级&#xff09;- 10 - 基于COMSOL&Simulink 凸轮机构的控制仿真 前言一、简介二、在Solidworks中创建3D模型&#xff…

强化学习和Q-Learning的综合研究

目录 一、说明 二、什么是强化学习&#xff1f; 三、监督学习、无监督学习和强化学习之间的区别。 四、强化学习中使用的术语。 五、强化学习中的智能体-环境交互&#xff1a;一个迷宫示例。 六、贝尔曼方程。 七、马尔可夫决策过程 &#xff08;MDP&#xff09; 八、马尔可夫决…

WebHttpServletRequestResponse(完整知识点汇总)

额外知识点 Web核心 Web 全球广域网&#xff0c;也成为万维网&#xff08;www&#xff09;&#xff0c;可通过浏览器访问的网站 JavaWeb 使用Java技术来解决相关Web互联网领域的技术栈 JavaWeb技术栈 B/S架构&#xff1a;Browser/Server&#xff0c;即浏览器/服务器 架构模式…

功能测试 之 单模块测试----轮播图、登录、注册

单功能怎么测&#xff1f; 需求分析 拆解测试点 编写用例 1.轮播图 &#xff08;1&#xff09;需求分析 位置&#xff1a;后台--页面--广告管理---广告列表(搜索index页面增加广告位2) 操作完成后需要点击admin---更新缓存,前台页面刷新生效 &#xff08;2&#xff09;拆解…

生信算法8 - HGVS转换与氨基酸字母字母表

HGVS 概念 HGVS 人类基因组变异协会(Human Genome Variation Society)提出的转录本编号&#xff0c;cDNA 参考序列(以前缀“c.”表示)、氨基酸参考序列(以前缀“p.”表示)。cDNA 中一种碱基被另一种碱基取代&#xff0c;以“>”进行表示&#xff0c;如&#xff1a;c.2186A&…

ETO MARKETS:美债高额利息——美国财政的不可承受之重

摘要 2024年&#xff0c;美国联邦政府债务的利息支出预计将达到8920亿美元&#xff0c;这一数字比国防开支还要多&#xff0c;凸显了政府债务和利率上升的双重压力。国会预算办公室&#xff08;CBO&#xff09;预测&#xff0c;利息支出占GDP的比例将继续上升&#xff0c;这意…

【IDEA】Spring项目build失败

通常因为环境不匹配需要在file->projectstructure里面调整一下。

Flink Sql Redis Connector

经常做开发的小伙伴肯定知道用flink连接redis的时候比较麻烦&#xff0c;更麻烦的是解析redis数据&#xff0c;如果rdis可以普通数据库那样用flink sql连接并且数据可以像表格那样展示出来就会非常方便。 历时多天&#xff0c;我终于把flink sql redis connector写出来了&…

性能测试(五)—— 数据库性能测试-mysql

1 mysql性能测试的主要内容 MySQL数据库介绍MySQL数据库监控指标MySQL慢查询工作原理及操作SQL的分析与调优方法MySQL索引的概念及作用MySQL索引的工作原理与设计规范MySQL存储引擎MySQL实时监控MySQL集群监控方案MySQL性能测试的用例准备使用Jmeter开发MySQL性能测试脚本执行…

【从零到一】电子元器件网站建设/开发方案、流程及搭建要点全解

电子元器件行业在数字化转型的大潮下也迎来了前所未有的发展机遇。一个高效、专业、用户友好的电子元器件网站&#xff0c;不仅能够提升品牌形象&#xff0c;还能显著提高销售转化率&#xff0c;增强客户粘性。道合顺芯站点将详细阐述电子元器件开发方案、实施流程&#xff0c;…

【ai】tx2-nx:搭配torch的torchvision

微雪的教程pytorch_version 1.10.0 官方教程安装torch官方教程 依赖项 nvidia@tx2-nx:~/twork/03_yolov5$ $ sudo apt-get install libjpeg-dev zlib1g-dev lib

如何避免群发引起反感?

微信群发信息引起反感主要是因为缺乏情感&#xff0c;尽管最初微信群发旨在传递有价值信息&#xff0c;但由于滥用&#xff0c;现在人们对其印象非常负面。但是&#xff0c;还是有办法挽救的&#xff01; 群发消息时按照这3个标准发&#xff0c;可以避免被反感。 1、短信群发目…

wps要会员才能把pdf分开,这不纯属智商税吗

我有一个文档 然后 我给你们写好了一个代码 from PyPDF2 import PdfReader, PdfWriterdef split_pdf(file_path, ranges, output_names):# Open the input PDF filewith open(file_path, rb) as pdf_file:reader = PdfReader(pdf_file)total_pages = len(reader.pages)if len…

Humanize,一个很有人情味的 Python 库

目录 01初识 Humanize 为什么选择 Humanize&#xff1f; 安装 Humanize 02时间与日期的处理 时间差的展示 日期的展示 03数字的处理 数字的单位转换 数字的精确度控制 数字的千位分隔符 04文件大小的处理 文件…

【Linux工具】yum软件包管理器与Vim编辑器的高效运用

目录 Linux 软件包管理器 YUM 什么是软件包 安装工具 rzsz 及注意事项 查看软件包 安装和卸载软件 安装软件 卸载软件 Linux 开发工具 编辑器 - Vim 使用 ​编辑 Vim 与 Vi 的区别 Vim 的基本概念 三种模式 Vim 的基本操作 操作尝试&#xff1a; Vim 命令集解释…