湘大 XTU OJ 1097 排序 题解:c++ 函数库的使用 快速排序 归并排序 冒泡排序
一、链接
1097 排序
二、题目
Description | ||
| N个整数,将其排序输出。 输入 第一行是一个整数K(1<=K<=20),表示有多少个样例,每个样例的第一行是一个整数N(1<=N<=1,000)和一个字符X,X为A时表示升序排序,为D时为降序排列;第二行为N个整数,每个整数都可以使用int表示,每个之间用一个空格隔开。 输出 每个样例输出一行,按排序要求输出整数,每个整数之间输出一个空格。(最后一个整数后不要有空格) | ||
Sample Input | ||
2 3 A 3 5 2 4 D 2 5 7 3 | ||
Sample Output | ||
2 3 5 7 5 3 2 | ||
Source | ||
| ericxie |
三、题意
实现两种排序,升序排序和降序排序
四、代码
c++函数库代码
#include<iostream>
#include<algorithm>using namespace std;const int N=1e3+10;int a[N];int main()
{int t;scanf("%d",&t);while(t--){int x;char op[2];scanf("%d%s",&x,op);for(int i=0;i<x;i++) scanf("%d",&a[i]);sort(a,a+x);if(op[0]=='D') reverse(a,a+x); for(int i=0;i<x-1;i++) printf("%d ",a[i]);printf("%d",a[x-1]);printf("\n");}return 0;
}
快速排序代码
#include<iostream>
#include<algorithm>using namespace std;const int N=1e3+10;int a[N];//快速排序
void quick_sort(int a[],int l,int r)
{if(l>=r) return;int i=l-1,j=r+1,x=a[(l+r)/2];while(i<j){do{i++;}while(a[i]<x);do{j--;}while(a[j]>x);if(i<j) swap(a[i],a[j]);}quick_sort(a,l,j);quick_sort(a,j+1,r);
}int main()
{int t;scanf("%d",&t);while(t--){char op[2];int n;scanf("%d%s",&n,op);for(int i=0;i<n;i++) scanf("%d",&a[i]);quick_sort(a,0,n-1);if(op[0]=='D') reverse(a,a+n);for(int i=0;i<n-1;i++) printf("%d ",a[i]);printf("%d",a[n-1]);printf("\n");}return 0;
}
归并排序
#include<iostream>
#include<algorithm>using namespace std;const int N=1e3+10;int q[N],temp[N];void merge_sort(int q[],int l,int r)
{if(l>=r) return;int x=(l+r)/2;merge_sort(q,l,x);merge_sort(q,x+1,r);int k=0,i=l,j=x+1;while(i<=x&&j<=r){if(q[i]<=q[j]) temp[k++]=q[i++];else temp[k++]=q[j++];}while(i<=x) temp[k++]=q[i++];while(j<=r) temp[k++]=q[j++];for(int i=l,j=0;i<=r;i++,j++){q[i]=temp[j];}
}int main()
{int t;scanf("%d",&t);while(t--){int n;char op[2];scanf("%d%s",&n,op);for(int i=0;i<n;i++) scanf("%d",&q[i]);merge_sort(q,0,n-1);if(op[0]=='D') reverse(q,q+n);for(int i=0;i<n-1;i++) printf("%d ",q[i]);printf("%d\n",q[n-1]);}return 0;
}
c语言冒泡排序
#include<stdio.h>int a[1000+10];void up(int a[],int n)
{for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){if(a[i]>a[j]){int temp=0;temp=a[i];a[i]=a[j];a[j]=temp;}}}
}void down(int a[],int n)
{for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){if(a[i]<a[j]){int temp=0;temp=a[i];a[i]=a[j];a[j]=temp;}}}
}int main()
{int t;scanf("%d",&t);while(t--){int n;char op[2];scanf("%d%s",&n,op);for(int i=0;i<n;i++) scanf("%d",&a[i]);if(op[0]=='A') up(a,n);else down(a,n);for(int i=0;i<n-1;i++) printf("%d ",a[i]);printf("%d\n",a[n-1]);}return 0;
}
五、总结
1.快速排序:785. 快速排序
2.归并排序:787. 归并排序
3.使用c++函数库是最简单的方法,直接调用sort函数,然后翻转一下就是从大到小进行降序排序
4. 冒泡排序自己手动实现swap函数即可,非常经典的四个语句
int temp=0;
temp=a[i];
a[i]=a[j];
a[j]=temp;
5.只管代码美观的话,先进行升序排序,条件判断一下,如果输入的字符串是D,就降序排序,最后按照要求输出即可,时间复杂度,可能会因为把变成原来时间复杂度的常数倍,但是其实没什么影响(针对做题来说)
6.输出有一些问题,行尾不能输出空格,所以只能先输出到倒数第二个元素,然后输出最后一个元素+换行
7. 简单来说快速排序是先移动数组元素再递归,归并排序是先递归再移动数组元素,并且需要使用一个额外的临时数组元素,归并排序是两个部分是排好序的,把两个排好序的部分存到临时数组里面,最后面还要把这个临时数组里面的所有元素存回原来的数组。
8.快速排序是在一个数组里面使用两个指针不断移动和维护
六、精美图片

相关文章:
湘大 XTU OJ 1097 排序 题解:c++ 函数库的使用 快速排序 归并排序 冒泡排序
一、链接 1097 排序 二、题目 Description N个整数,将其排序输出。 输入 第一行是一个整数K(1<K<20),表示有多少个样例,每个样例的第一行是一个整数N(1<N<1,000)和一个字符X&…...
Stable Diffusion AI绘图教学
课程介绍下载 这门课程将教授学生使用Stable Diffusion AI绘图工具进行数据可视化和图形设计。学生将学习基本的绘图原理、数据分析技巧,以及如何使用Stable Diffusion AI创建高质量的图表和可视化作品。通过实践项目和案例研究,学生将提升绘图技能&…...
39、传输层的任务和协议
从本节内容开始,我们学习TCP/IP模型的传输层的知识。传输层是TCP/IP模型中的重要组成部分,如果没有传输层的处理,那么源主机发送的IP数据包到达目的主机之后,目的主机将不知道这个数据是哪个应用程序的数据,就不能很好…...
系统架构设计专业技能 · 网络规划与设计(三)【系统架构设计师】
系列文章目录 系统架构设计专业技能 网络规划与设计(三)【系统架构设计师】 系统架构设计专业技能 系统安全分析与设计(四)【系统架构设计师】 系统架构设计高级技能 软件架构设计(一)【系统架构设计师…...
使用Matplotlib判断鼠标是否点击在当前线上的详细指南
系列文章目录 文章目录 系列文章目录前言一、导入必要的库二、创建图表和线条三、定义鼠标点击事件处理函数四、显示图表总结前言 Matplotlib是一个强大的绘图库,用于在Python中创建各种类型的图表和可视化。本文将详细介绍如何使用Matplotlib来判断鼠标是否点击在当前线上,…...
http get、post、put
HTTP协议定义了多种请求方法,用于不同的操作。最常见的有 GET、POST 和 PUT。 GET:GET 是最常用的方法,通常用于请求服务器发送某个资源。GET 请求只通过 URL 传送数据,数据信息会附在 URL 之后,以参数的形式附加。由于这种传送方式的限制,GET 请求的数据量较小,且安全性…...
仅使用 CSS 创建打字机动画效果
创建打字机效果比您想象的要容易。虽然实现这种效果的最常见方法是使用 JavaScript,但我们也可以使用纯 CSS 来创建我们的打字机动画。 在本文中,我们将了解如何仅使用 CSS 创建打字机动画效果。它简单、漂亮、容易。我们还将看看使用 CSS 与 JavaScrip…...
pytest fixture 高级使用
一、fixture中调用fixture 举例: 输出: 说明:登录fixture 作为参数传递到登出方法中,登录方法的返回值就可以被登出方法使用 二、在fixture中多参数的传递(通过被调用函数传参) 举例: 输出&a…...
远程控制医疗行业应用解析:如何满足医院合规需求?
远程控制医疗行业应用解析:如何满足医院合规需求? 作为一个起源于IT行业的技术,以远程桌面为基础的远程控制技术目前在医疗领域也已经有了比较广阔的应用前景,尤其是在医疗数字化系统/设备的远程运维场景,已经有了一些…...
【C++】开源:glog日志库配置使用
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍glog日志库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次…...
使用 React Native CLI 创建项目
React Native 安装的先决条件和设置 需要掌握的知识点 掌握 JavaScript 基础知识掌握 React 相关基础知识掌握 TypeScript 相关基础知识 安装软件前需要首先安装Chocolatey。Chocolatey 是一种流行的 Windows 包管理器。 安装 nodejs 和 JDK choco install -y nodejs-lts …...
在R中将列表(list)转换为向量(vector)
问题:将列表中的所有元素“展平”,赋值给一个向量 解决方案:使用unlist()函数; 在许多情况下需要向量,例如,baseR中的许多统计函数需要一个向量作为输入,例如,如果iq.score是一个包…...
access怎么做进销存?借助access开发进销存管理应用
我不太推荐使用Access,因为他的缺点还是比较明显的: 1、软件自身限制 不能用于互联网:使用Access制作好的管理软件,访问页只能在局域网中使用;只能在Windows上运行:Access仅支持windows的运行环境&#x…...
css实现卡片的左上角有一个三角形的遮盖效果
需求: 卡片的左上角有一个绿色的三角形标签,用来区分状态 实现: .vCard{position: relative;overflow: hidden; } .vCard::before {content: "";position: absolute;top: 0;left: 0;width: 0;height: 0;border-bottom: 20px solid transparent;border-left: 20px …...
中间件RabbitMQ消息队列介绍
1. MQ的相关概念 1.1 什么是MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息…...
MySQL不知道密码,直接修改密码
很简单,我们跳过验证,直接进去修改就好 修改配置文件 vim /etc/my.cnf在[mysqld]下直接添加配置 skip-grant-tables如图: 保存,退出即可。 重启服务 service mysqld restart进入MySQL #(直接点击回车,密码为空)…...
Win10关闭自动更新的方法和影响(Windows modules installer worker cpu占用过高)
目录 问题描述: Windows modules installer worker是什么? Win10关闭自动更新的方法: Win10关闭自动更新的影响: 问题描述: 有时我们在使用电脑的过程中会突然出现电脑运行过慢,发热,风扇噪…...
Xcode 基座打包
Xcode基座打包-APP更新版本内容无效 问题:解决: 问题: 使用xcode基座打包之后,上传到appstore进行提审发布。 用户在appstore商城进行更新下载,打开更新后的APP发现版本号是最新的,APP里面的其他内容还是上…...
最强自动化测试框架Playwright(9)- 下载文件
对于页面下载的每个附件,都会发出 page.on(“download”) 事件。 下载开始后,将发出下载事件。下载完成后,下载路径将变为可用 所有这些附件都下载到一个临时文件夹中。可以使用事件中的下载对象获取下载 URL、文件系…...
python爬虫实战(1)——网站小说
整本小说的爬取保存 目标大致思路页面的爬取解析—XPath请求网页内容解析网页内容正文爬取与解析单个页面数据获取爬取所有页面 数据清洗 经过学习基础,我们学以致用一下子,爬取小说,注意这个小说本身是免费的哦,以后再进阶。 本次…...
一份不到 70 行的 Markdown,凭什么一周冲上 GitHub 趋势榜首?
JeecgBoot AI专题研究 | andrej-karpathy-skills:给 AI 编程立规矩,外加一分钟安装指南 一个反常识的 GitHub 现象 最近 GitHub 趋势周榜的第一名,不是新框架,也不是新模型,而是一份不到 70 行的 Markdown 文件——项…...
碧蓝航线自动化助手:5步轻松实现24/7智能托管
碧蓝航线自动化助手:5步轻松实现24/7智能托管 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为碧蓝航线的重…...
从康托集这个‘怪胎’出发,逆向理解Borel集、Sigma代数与拓扑空间的层层递进关系
从康托集逆向拆解:Borel集、σ-代数与拓扑空间的认知革命 数学分析中那些看似抽象的概念,往往藏着一个反常识的入口。1883年由德国数学家格奥尔格康托提出的康托集(Cantor Set),就是这样一个充满矛盾的存在——它既是勒…...
AI模型热更新失败?.NET 11 AssemblyLoadContext + ONNX模型热重载方案(含Assembly卸载泄漏检测工具)
第一章:AI模型热更新失败的根源与.NET 11新范式突破AI模型在生产环境中实施热更新时频繁失败,核心症结在于传统托管运行时对动态类型加载、内存布局锁定及 JIT 编译缓存的强耦合约束。.NET 11 引入的 Runtime-Neutral Model Hosting(RNMH&…...
别再只盯着PSNR了!用Python实战对比MSE、SSIM、UQI,手把手教你选对图像相似度指标
图像相似度评估实战:从指标原理到场景化选择指南 当你在GitHub上开源了一个新的图像超分辨率模型,或在公司内交付了一套医疗影像增强系统时,最尴尬的时刻莫过于被问到:"这个结果到底好在哪里?"——而你只能支…...
DataGrip连接MySQL报错‘无效时区’?5分钟搞定配置并解锁它的SQL智能补全
DataGrip连接MySQL报错‘无效时区’?5分钟搞定配置并解锁它的SQL智能补全 第一次打开DataGrip准备大展身手,却被"Server returns invalid timezone"的红色报错拦住去路?别急着关掉这个强大的数据库IDE,其实只需要5分钟调…...
别再只盯着Datasheet了!NS4225 D类音频功放外围电路设计避坑指南(附完整原理图与PCB文件)
NS4225 D类功放实战设计:从数据手册到稳定输出的全流程解析 在硬件设计领域,D类音频功放以其高效率、小体积的优势逐渐成为音频系统的首选方案。NS4225作为一款集成式D类功放芯片,数据手册上简洁的典型应用电路往往让工程师产生"照搬就能…...
从C语言到Verilog:一个软件工程师的FPGA入门踩坑实录(附HDLBits刷题笔记)
从C语言到Verilog:一个软件工程师的FPGA入门踩坑实录 第一次接触Verilog时,我正坐在实验室里盯着屏幕上闪烁的波形发呆。作为一名计算机专业的毕业生,我习惯了C语言中清晰的顺序执行逻辑,但Verilog中那些看似熟悉却又陌生的语法结…...
避坑指南:RK3588上Rviz和Gazebo报‘GLX’错的根本原因与两种修复方案(Wayland/X11)
RK3588图形兼容性深度解析:从GLX报错到Rviz/Gazebo流畅运行的工程实践 当你满心欢喜地在RK3588上配置好ROS环境,准备用Rviz可视化传感器数据或用Gazebo测试机器人算法时,终端突然抛出"GLX"相关的错误提示——这种挫败感我深有体会。…...
TQ2440开发板USB烧录驱动安装避坑指南(Win10/11禁用驱动签名)
TQ2440开发板USB驱动安装全攻略:突破Windows数字签名封锁 第一次拿到TQ2440开发板时的兴奋,很快被Windows那个红色的"第三方INF不包含数字签名信息"警告浇灭——这恐怕是每个嵌入式新手都会经历的"成人礼"。当你在设备管理器里看到那…...
