2021JSP普及组第二题:插入排序

2021JSP普及组第二题
题目:
在这里插入图片描述
思路:
题目要求排序后根据操作进行对应操作。

  • 操作一需要显示某位置数据排序后的位置,所以需要定义结构体数组储存原数据的位置和数据本身
  • 排序后所得数据要根据原位置输出排序后的位置,所以建立一个新的数组,数组下标对应数据原位置,值则为排序后的位置
  • 第一部可以直接sort排序,但是操作后如果都用sort会超时。题干的插入排序不难想到,插入排序即是对已经排好序的数组进行插入操作后排序,一次插入后排序的复杂度为o(2n)
    1. 思路一:可以考虑判断操作的位置前后的数据大小,然后对数组前一段进行修改,或者后一段进行修改。但是由于相同数据还要判断数据原位置的大小,所以考虑的过程相对复杂
    2. 思路二:可以直接判断整个数组的内容,正着遍历和反着遍历(遍历是只能判断相邻两个元素的大小,所以反着再遍历一遍才能保持排序准确),而数据相同需要判断原位置大小(插入排序中,若数据相同,数据排序后的相对位置是不变的)
  • 排序过程是对结构体进行排序,因此排序函数需要指针,而不是简单的形参
//定义结构体用来存储数组值和下标
//排序可以直接用sort
//修改后的数据修直接遍历处理 
#include<bits/stdc++.h>
#include <algorithm> 
using namespace std;struct node{int n;int id;}arr[8001]; 
void swap(node *a,node *b);
bool cmp(node a, node b){if(a.n!=b.n) return a.n<b.n;//升序排列 else return a.id<b.id;
}
int main(){int arr_k,k,b[8005];//分别储存数组长度,操作数int k1,m,m1,m2;//分别储存操作序号和数据 cin>>arr_k>>k;for(int i=1;i<=arr_k;i++){cin>>arr[i].n;arr[i].id=i;}sort(arr,arr+arr_k+1,cmp);//排序 //记录排序后的数据for(int i=1;i<=arr_k;i++){b[arr[i].id]=i;} while(k--){cin>>k1;if(k1==2){cin>>m;cout<<b[m]<<endl;}else{cin>>m1>>m2;arr[b[m1]].n=m2;arr[b[m1]].id=m1;for(int i=1;i<arr_k;i++){ if(cmp(arr[i],arr[i+1])==0){swap(&arr[i],&arr[i+1]);}for(int i=arr_k;i>1;i--){  if(cmp(arr[i-1],arr[i])==0){swap(&arr[i],&arr[i-1]);}}//更新排序for(int i=1;i<=arr_k;i++){b[arr[i].id]=i;} }}return 0;
}
void swap(node *a,node *b){int t1,t2;t1=a->n,t2=a->id;a->n=b->n,a->id=b->id;b->n=t1,b->id=t2;
}

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

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

相关文章

Google Gemini API 使用入门及其集成 Android 应用程序

Google 的 Gemini SDK 是一款功能强大的工具,可直接访问 Android 应用程序中的 Gemini AI 模型。此集成简化了应用程序开发,因为开发人员无需管理复杂的后端 AI 基础架构。让我们深入了解如何将 Gemini 的功能引入您的 Android 项目。 Gemini API 使用入门及其集成 Android 应…

新手快速上手IDEA【常用快捷键】

目录 一、常用二、进阶&#xff08;提高编码速度&#xff09;三、其他四、查找、替换与关闭最后 一、常用 说明快捷键复制代码ctrl c粘贴ctrl v剪切ctrl x撤销ctrl z反撤销ctrl shift z保存-save allctrl s全选-select allctrl a 二、进阶&#xff08;提高编码速度&a…

Android开机动画,framework修改Bootanimation绘制文字。

文章目录 Android开机动画&#xff0c;framework修改Bootanimation动画绘制文字。opengl绘制源码分析 Android开机动画&#xff0c;framework修改Bootanimation动画绘制文字。 frameworks/base/cmds/bootanimation/bootanimation.cpp 绘制时间的一个方法 // We render 12 or …

知识图谱源码笔记

目录 2018年文档生成知识图谱 30多个知识图谱源码 讲原理的 文档生成知识图谱 2018年文档生成知识图谱 https://github.com/liuhuanyong/TextGrapher 30多个知识图谱源码 参考&#xff1a;【回答问题】ChatGPT上线了&#xff01;推荐30个以上比较好的构建知识图谱源码_c…

开放平台接口安全验证

文章目录 开放平台接口安全验证I 加签方式说明1.1 签名生成的通用步骤1.2 生成随机数算法1.3 举例1.4 签名校验工具II Header参数说明III 业务接口返回结构说明开放平台接口安全验证 统一使用sign签名验证,签名规则也会在本文档中,详细说明。请大家认真阅读。 向平台申请密码…

江苏双线服务器租用该怎样管理?

在选择江苏双线服务器租用时&#xff0c;需要选择一家靠谱的服务提供商&#xff0c;因为江苏省属于经济发展比较迅速的地区&#xff0c;会有着很多鱼龙混杂的服务提供商&#xff0c;所以我们可以去提供商所在地去进行考察一下&#xff0c;确保服务提供商有着良好的声誉和稳定的…

Linux网络编程:数据链路层协议

目录 前言&#xff1a; 1.以太网 1.1.以太网帧格式 1.2.MTU&#xff08;最大传输单元&#xff09; 1.2.1.IP协议和MTU 1.2.2.UDP协议和MTU 1.2.3.TCP协议和MTU 2.ARP协议&#xff08;地址解析协议&#xff09; 2.1.ARP在局域网通信的角色 2.2.ARP报文格式 2.3.ARP报文…

odoo前端开发环境:深入探索与搭建指南

odoo前端开发环境&#xff1a;深入探索与搭建指南 在Odoo的生态系统中&#xff0c;前端开发环境的搭建对于开发者来说是一个关键而复杂的任务。它不仅涉及技术的选择和应用&#xff0c;还需要对Odoo的架构和机制有深入的理解。本文将从四个方面、五个方面、六个方面和七个方面…

数据库中锁的机制和MVCC协议以及隔离级别

文章目录 数据库中的锁锁与索引的关系释放锁的时机乐观锁与悲观锁行锁与表锁共享锁与排它锁意向锁记录锁、间隙锁和临键锁记录锁间隙锁临键锁 锁优化方案 MVCC协议MySQL的隔离级别脏读和幻读快照读和当前读 版本链Read ViewRead View 与已提交读Read View 与可重复读m_up_limit…

LIMS如何实现符合实验室CMA、CNAS管理体系规范

LIMS&#xff08;Laboratory Information Management System&#xff09;实现符合实验室CMA&#xff08;中国计量认证&#xff09;、CNAS&#xff08;中国合格评定国家认可委员会&#xff09;管理体系规范的过程&#xff0c;主要可以分为以下几个关键步骤&#xff1a; 一、准备…

工业无线wifi系统搭配高速路由,解决联网及数据传输

​面对日益复杂的工业应用场景,企业对无线网络的高速、可靠和安全提出了更高要求。星创易联SR600系列多网口4G路由器应运而生,为工业无线WiFi系统提供了一个性能卓越的高速路由方案。&#xff08;key-iot.com/iotlist/sr600-5.html&#xff09; SR600路由器集4G LTE、虚拟专用…

Spring 冷知识:利用 @Profile 实现 AOP 的预先配置

在 Spring 框架中&#xff0c;Profile 注解是一个经常被忽视的特性&#xff0c;它可以让你在特定环境或配置下激活特定的 Bean。这个特性可以用来实现 AOP 的预先配置&#xff0c;即在 Spring 应用启动之前&#xff0c;根据不同的配置文件或环境变量来决定哪些 AOP 拦截器应该被…

直播美颜工具解析:美颜SDK核心技术与性能优化方法

本篇文章&#xff0c;小编将深入解析直播美颜SDK的核心技术及其性能优化方法&#xff0c;以期为开发者提供有价值的参考。 一、美颜SDK核心技术 1.实时人脸检测与识别 美颜SDK的核心技术之一是实时人脸检测与识别。这项技术基于深度学习算法&#xff0c;能够快速、准确地识别…

零刻SER8 AMD 8845Hs Ryzen AI 本地部署大语言模型教程!

零刻SER8 8845HS,配备了一个内置的 NPU&#xff08;神经网络处理单元&#xff09;&#xff0c;可以通过LM Studio语言大模型来部署己的 GPT 模型 AI 聊天机器人&#xff0c;AI 助手已迅速成为提高生产力、效率&#xff0c;甚至是头脑风暴的关键资源。在本地机器上运行 AI 聊天机…

数字人私有化部署系统厂商大比拼

数字人系统私有化部署放在2022年简直是天方夜谭&#xff0c;没有投资个上百万和数百万想建立自己的一个数字人saas平台是可望不可及的事。但是到了2023年&#xff0c;数字人私有化部署系统价格从最初的数十万&#xff0c;迅速被打压到数万元就可以拥有一个自己的数字人平台。可…

ArcGIS中几个好用的空间分析工具

ArcGIS是一款经典的GIS应用&#xff0c;其空间分析能力很强&#xff0c;有着丰富的空间分析工具。今天&#xff0c;我们一起来了解几个好用的空间分析工具的功用及操作。 注&#xff1a;演示版本为ArcMap10.4.1 1.方向分布&#xff08;标准差椭圆&#xff09; 路径&#xff…

陆面生态水文模拟与多源遥感数据同化的实践技术应用

了解陆表过程的主要研究内容以及陆面模型在生态水文研究中的地位和作用&#xff1b;熟悉模型的发展历程&#xff0c;常见模型及各自特点&#xff1b;理解Noah-MP模型的原理&#xff0c;掌握Noah-MP模型在单站和区域的模拟、模拟结果的输出和后续分析及可视化等方法&#xff1b;…

数分—AB测试

一、介绍 AB测试是一种常用于比较两种或多种不同版本的产品、服务或策略效果的实验方法。在AB测试中&#xff0c;被比较的版本被标记为A组和B组&#xff0c;然后两组被随机分配给不同的用户群体或实验对象。接着&#xff0c;针对每个组收集数据&#xff0c;比如用户行为、转化…

(一文读懂)大模型到底是怎么生成文字的?

前言 在人工智能的领域&#xff0c;大模型在去年已经成为了一个热门的话题。 各大厂商如谷歌、微软、OpenAI等&#xff0c;都在积极研发和应用大模型技术。 这些模型在语言理解、图像识别、推荐系统等方面都表现出了惊人的能力&#xff0c;甚至在某些任务上&#xff0c;已经…

【JS红宝书学习笔记】第6章 集合引用类型

第6章 集合引用类型 对象 数组与定型数组 Map、WeakMap、Set 以及 WeakSet 类型 1. object 很适合存储和在应用程序间交换数据。 显式创建object的两种方式&#xff1a; &#xff08;1&#xff09;new操作符 let person new Object(); person.name "Nicholas";…