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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

字典树,AcWing 5726. 连续子序列

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 5726. 连续子序列 - AcWing题库 二、解题报告 1、思路分析 字典树存储前缀和 考虑边遍历计算前缀和&#xff0c;边查询字典树 查询流程&#xff1a; 记当前前缀和为s 如果当前位k为1&#xff0c;那么s …

Qt6 mathgl数学函数绘图

1. 程序环境 Qt6.5.1, mingw11.2mathgl 8.0.1: https://sourceforge.net/projects/mathgl/,推荐下载mathgl-8.0.LGPL-mingw.win64.7z,Windows环境尝试自己编译mathgl会缺失一些库,补充完整也可以自己编译,路径"D:\mathgl-8.0.LGPL-mingw.win64\bin"添加至系统环境…

关于Golang中自定义包的简单使用-Go Mod

1. go env 查看 GO111MODULE 是否为 on&#xff0c;不是修改成on go env -w GO111MODULEon 2 .自定义包的目录格式 3. test.go 内容 package calc func Add(x, y int) int { // 首字母大写表示公有方法return x y }func Sub(x, y int) int {return x - y } 4.生成calc目…

RedisSearch与Elasticsearch:技术对比与选择指南

码到三十五 &#xff1a; 个人主页 数据时代&#xff0c;全文搜索已经成为许多应用程序中不可或缺的一部分。RedisSearch和Elasticsearch是两个流行的搜索解决方案&#xff0c;它们各自具有独特的特点和优势。本文简单探讨一些RedisSearch和Elasticsearch之间的技术差异。 目录…

AndroidStudio使用高德地图API获取手机定位

一、高德地图API申请 首先去高德注册开发者账号 下面这两个选项&#xff0c;也是我们项目成功的关键 1.1怎么获取SHA1指纹密码 ①使用AS自带的签名文件 你的用户文件下面会有一个.android文件夹,进入文件夹,在这个路径下打开cmd 如果.android下面没有签名文件参考创建文章 …

CSS Canvas鼠标点击特效之天女散花(文本粒子动画)

1.效果 2.代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><style>body,html {margin: 0;padding: 0;wi…

一个班有n个学生,需要把每个学生的简单材料(姓名和学号)输入计算机保存。然后可以通过输入某一学生的姓名查找其有关资料。

当输入一个姓名后&#xff0c;程序就查找该班中有无此学生&#xff0c;如果有&#xff0c;则输出他的姓名和学号&#xff0c;如果查不到&#xff0c;则输出"本班无此人"。 为解此问题&#xff0c;可以分别编写两个函数&#xff0c;函数input_data用来输人n个…

Spring系统学习 - Spring入门

什么是Spring&#xff1f; Spring翻译过来就是春天的意思&#xff0c;字面意思&#xff0c;冠以Spring的意思就是想表示使用这个框架&#xff0c;代表程序员的春天来了&#xff0c;实际上就是让开发更加简单方便&#xff0c;实际上Spring确实做到了。 官网地址&#xff1a;ht…

vmdx 文件如何打开

如果在网上下载到了 vmdx 文件要如何使用呢 首先开启 vmware 新建一个虚拟机 选择高级模式 选择你要给他的配置 在选择磁盘文件的时候,找到这个vmdx 如果要升级的话最好选择【不升级】 然后就可以用了

倪师哲学。不要浪费时间去做无谓的事情

再比如你像我拍这个视频&#xff0c;在我的视频下方啊&#xff0c;评论区啊&#xff0c;经常性的会有一些人去评论&#xff0c;一些那种不痛不痒的事&#xff0c;我给你找几条&#xff0c;你看一下就知道了. 就比如&#xff0c;今天早上&#xff0c;我翻到倪海夏老师的第一篇图…

如何获取SSL证书,消除网站不安全警告

获取SSL证书通常涉及以下几个步骤&#xff1a; 选择证书颁发机构&#xff08;CA&#xff09;&#xff1a; 你需要从受信任的SSL证书颁发机构中选择一个&#xff0c;比如DigiCert、GlobalSign、JoySSL等。部分云服务商如阿里云、腾讯云也提供免费或付费的SSL证书服务。 生成证…

命运方舟台服注册 命运方舟台服怎么注册?不会操作看这里

命运方舟台服注册 命运方舟台服怎么注册&#xff1f;不会操作看这里 命运方舟作为今年备受瞩目的一款MMORPG类型游戏&#xff0c;在上线前的预约数量已经一次又一次创下新高。这款游戏的开发商Smile gate真是给玩家们带来了一款让人眼前一亮的作品。游戏创建在虚幻引擎的基础…

为什么要学习数据结构和算法

前言 控制专业转码学习记录&#xff0c;本科没学过这门课&#xff0c;但是要从事软件行业通过相关面试笔试基础还是要打牢固的&#xff0c;所以通过写博客记录一下。 必要性 1.越是厉害的公司&#xff0c;越是注重考察数据结构与算法这类基础知识 2.作为业务开发&#xff0c…

40号渐变灰色背景证件照要求,手机拍照轻松拍干部照片

灰色渐变背景的证件照是一种常见的照片类型&#xff0c;在干部档案、事业单位工作人员信息采集、履历及升迁公示等阶段会用到&#xff0c;按照规范需要使用40号渐变灰色背景。很多朋友不清楚40号灰色是哪种灰色&#xff0c;以及照片的尺寸要求&#xff0c;下面就重点介绍40号渐…

一篇文章讲透数据结构之树

一.树 1.1树的定义 树是一种非线性的数据结构&#xff0c;它是有n个有限结点组成的一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根在上&#xff0c;叶在下的。 在树中有一个特殊的结点&#xff0c;称为根结点&#xff0c;根结点…

vue3可以快速简单的操作dom元素了

再也不需要用document.getElementById("myElement")的这种方式来对dom元素进行操作了 我们需要使用模板引用——也就是指向模板中一个 DOM 元素的 ref。我们需要通过这个特殊的 ref attribute 来实现模板引用&#xff1a; <script setup> import { ref, onMo…

【linux】docker安装下载器:aria2、gopeed、thunder迅雷

一、aria2 1、下载aria2服务镜像 docker pull p3terx/aria2-pro 2、下载ariang页面服务 docker pull p3terx/ariang 3、启动aria2服务 docker run -d --name aria2 \ --restart unless-stopped \ --log-opt max-size1m \ -e PUID$UID \ -e PGID$GID \ -e UMASK_SET022 \ -…

基于电导增量MPPT控制算法的光伏发电系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于电导增量MPPT控制算法的光伏发电系统simulink建模与仿真。输出MPPT跟踪后的系统电流&#xff0c;电压以及功率。 2.系统仿真结果 3.核心程序与模型 版本&#xff1a;MAT…

Facebook的创新实验室:人工智能与新技术探索

Facebook作为全球领先的社交媒体平台之一&#xff0c;一直在不断探索和应用最新的技术来改善用户体验、推动创新和拓展业务边界。其创新实验室更是探索人工智能&#xff08;AI&#xff09;和新技术的前沿&#xff0c;为未来的社交媒体发展开辟了新的可能性。本文将深入探讨Face…

深度学习复盘与论文复现A

文章目录 一、查漏补缺复盘1、python中zip()用法2、Tensor和tensor的区别3、计算图中的迭代取数4、nn.Modlue及nn.Linear 源码理解5、知识杂项思考列表6、KL散度初步理解 二、处理多维特征的输入1、逻辑回归模型流程2、Mini-Batch (N samples) 三、加载数据集1、Python 魔法方法…