数据结构试题 16-17

先这样吧,,专业课不是统考,我发现每年的卷子风格都不太一样,侧重点也不一样。以及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.mzph.cn/pingmian/28836.shtml

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

相关文章

基于single flight来解决缓存击穿

目录 1. 缓存击穿2. 常见解决方案3.single flight方式3.1 模拟业务场景3.2 使用single flight的方式 缓存雪崩、缓存击穿、缓存穿透不单单是缓存领域的经典场景&#xff0c;更是面试当牛马时必备&#xff08;背&#xff09;八股文。 我们来讨论下缓存击穿场景下的解决方案。 …

【AI开发】RAG基础

RAG的基本流程&#xff1a; 用一个loader把knowledge base里的知识做成一个个的document&#xff0c;然后把document切分成snippets&#xff0c;把snippets通过embedding&#xff08;比如openai的embedding模型或者huggingface的&#xff09;向量化&#xff0c;存储到vectordb…

git 配置私人令牌

这里写自定义目录标题 获取私人令牌配置个人令牌 获取私人令牌 在个人设置里点击私人令牌选型&#xff0c;之后生成令牌即可。注意&#xff1a;令牌只会出现一次&#xff0c;务必保存好。 配置个人令牌 个人令牌&#xff1a;3c15c866fa61066212a83c66fd8133ba # 进入项目文…

.NET C# 实现国密算法加解密

.NET C# 实现国密算法加解密 概述1. SM12. SM23. SM34. SM45. SM76. SM97. ZUC C#代码实现1 SM22 SM33 SM4 概述 国密算法&#xff08;SM算法&#xff09;是中国国家密码管理局制定的一系列密码算法标准。这些算法被广泛应用于各种信息安全领域&#xff0c;包括通信、电子商务…

护眼灯对眼睛有伤害吗?千万要小心的行业四大弊端内幕

护眼灯&#xff0c;作为现代家居与办公环境中不可或缺的照明伴侣&#xff0c;因其普及性广受青睐。然而&#xff0c;随着大众对视觉健康意识的逐渐增强&#xff0c;一个疑问悄然滋生&#xff1a;护眼灯对眼睛有伤害吗&#xff1f;这一问题不仅触及到了人们对视觉健康的深层担忧…

MLOps模型部署的三种策略:批处理、实时、边缘计算

机器学习运维&#xff08;MLOps&#xff09;是一组用于自动化和简化机器学习&#xff08;ML&#xff09;工作流程和部署的实践。所选择的部署策略可以显著影响系统的性能和效用。所以需要根据用例和需求&#xff0c;采用不同的部署策略。在这篇文章中&#xff0c;我们将探讨三种…

Java家政预约系统源码 家政上门APP源码 家电安装、维修、清洗、美容系统源码、家政系统各端功能细分

Java家政预约系统源码 家政上门APP源码 家电安装、维修、清洗、美容系统源码、家政系统各端功能细分 家政服务系统是一种提供家政服务的系统&#xff0c;它可以为客户提供上门家庭清洁、钟点工、保姆、月嫂、育婴师、护理员等家政服务。节省时间和成本&#xff0c;提高效率&…

网络层只懂路由?这9个知识点被严重低估了

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 下午好&#xff0c;我的网工朋友。 网络层想必你已经耳熟能详&#xff0c;它的作用自然是不容小觑。 它负责将数据从源头准确地投递到目的地&am…

9.2JavaEE——JDBCTemplate的常用方法(一)excute()方法

execute()方法用于执行SQL语句&#xff0c;其语法格式如下&#xff1a; jdTemplate.execute("SQL 语句");下面以创建数据表的SQL语句为例&#xff0c;来演示excute()方法的使用&#xff0c;具体步骤如下。 1、创建数据库 在MySQL中&#xff0c;创建一个名为spring的…

QT pro包含库文件目录符号含义

直接调用DLL需要三个文件&#xff0c;头文件(.h)、导入库文件(.lib)、动态链接库(.dll)&#xff0c; 注意&#xff1a;在qtCreaor中生成的动态库库文件文件为.a结尾&#xff0c;vs生成的动态链接库是.lib结尾 1、首先我们把 .h与.lib/.a 文件复制到程序当前目录下&#xff0c…

软设之白盒测试

白盒测试分为语句覆盖&#xff0c;判定覆盖&#xff0c;条件覆盖&#xff0c;判断/条件覆盖&#xff0c;条件组合覆盖&#xff0c;路径覆盖 语句覆盖 定义:被测试程序中的每条语句至少执行一次 特点:对执行逻辑覆盖很低&#xff0c;一般认为是很弱的逻辑组合。 判定覆盖: …

onnx基本概念

onnx基本概念 参考 文章目录 onnx基本概念Input, Output, Node, Initializer, AttributesSerialization with protobuf元数据List of available operators and domains支持的类型Opset版本Subgraphs, tests and loopsExtensibilityFunctionsShape (and Type) Inferencetools O…

编码在网络安全中的应用和原理

前言:现在的网站架构复杂&#xff0c;大多都有多个应用互相配合&#xff0c;不同应用之间往往需要数据交互&#xff0c;应用之间的编码不统一&#xff0c;编码自身的特性等都很有可能会被利用来绕过或配合一些策略&#xff0c;造成一些重大的漏洞。 什么是编码&#xff0c;为什…

UniVue更新日志:使用Carousel组件实现轮播图效果

github仓库 稳定版本仓库&#xff1a;https://github.com/Avalon712/UniVue 开发版本仓库&#xff1a;https://github.com/Avalon712/UniVue-Develop UniVue扩展框架-UniVue源生成器仓库&#xff1a;https://github.com/Avalon712/UniVue-SourceGenerator 更新说明 今天的更…

YOLOv8改进 | 注意力机制 | 添加混合局部通道注意力——MLCA【原理讲解】

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 注意力机制是计算机视觉中最广泛使用的组件之一,它可以帮助神经网络强调重要元素并抑制不相关的元素。然而,绝大多数的通道注意力机制只包含通道特征信息而忽略了空间特征信息,这导致了模型表征效果或对象检测…

吴恩达深度学习笔记:机器学习(ML)策略(1)(ML strategy(1))1.11-1.12

目录 第三门课 结构化机器学习项目&#xff08;Structuring Machine Learning Projects&#xff09;第一周 机器学习&#xff08;ML&#xff09;策略&#xff08;1&#xff09;&#xff08;ML strategy&#xff08;1&#xff09;&#xff09;1.11 超过人的表现&#xff08;Surp…

报错:C1189#error: The <experimental/filesystem> header providing 解决方案

今天开发过程中&#xff0c;需要使用文件系统experimental/filesystem&#xff0c;报错C1189#error: The &#xff1c;experimental/filesystem&#xff1e; header providing &#xff0c;通过以下解决方案&#xff0c;成功运行程序。 目录 一、打开项目下的属性 二、选择C/…

算法02 递归算法及其相关问题【C++实现】

递归 在编程中&#xff0c;我们把函数直接或者间接调用自身的过程叫做递归。 递归处理问题的过程是&#xff1a;通常把一个大型的复杂问题&#xff0c;转变成一个与原问题类似的&#xff0c;规模更小的问题来进行求解。 递归的三大要素 函数的参数。在用递归解决问题时&…

sci发表技巧指导

sci发表技巧指导 发表Sci期刊&#xff0c;很多作者都认为难度很大。其实&#xff0c;掌握以前发表技巧就没有那么难。投稿Sci期刊首先要确定自己属于哪个领域&#xff0c;例如医学类、经济类、理工类。然后根据sci期刊的投稿要求撰写sci论文&#xff0c;以下是sci发表技巧指导…

RabbitMQ消息的可靠传输和防止消息丢失

在Spring Cloud项目中&#xff0c;为了确保RabbitMQ消息的可靠传输和防止消息丢失&#xff0c;需要考虑以下几个方面&#xff1a; 消息持久化&#xff1a;确保消息在RabbitMQ中持久化。队列持久化&#xff1a;确保队列是持久化的。发布确认&#xff1a;使用发布确认机制确保消…