当前位置: 首页 > news >正文

湘大 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个整数&#xff0c;将其排序输出。 输入 第一行是一个整数K&#xff08;1<K<20&#xff09;&#xff0c;表示有多少个样例&#xff0c;每个样例的第一行是一个整数N&#xff08;1<N<1,000&#xff09;和一个字符X&…...

Stable Diffusion AI绘图教学

课程介绍下载 这门课程将教授学生使用Stable Diffusion AI绘图工具进行数据可视化和图形设计。学生将学习基本的绘图原理、数据分析技巧&#xff0c;以及如何使用Stable Diffusion AI创建高质量的图表和可视化作品。通过实践项目和案例研究&#xff0c;学生将提升绘图技能&…...

39、传输层的任务和协议

从本节内容开始&#xff0c;我们学习TCP/IP模型的传输层的知识。传输层是TCP/IP模型中的重要组成部分&#xff0c;如果没有传输层的处理&#xff0c;那么源主机发送的IP数据包到达目的主机之后&#xff0c;目的主机将不知道这个数据是哪个应用程序的数据&#xff0c;就不能很好…...

系统架构设计专业技能 · 网络规划与设计(三)【系统架构设计师】

系列文章目录 系统架构设计专业技能 网络规划与设计&#xff08;三&#xff09;【系统架构设计师】 系统架构设计专业技能 系统安全分析与设计&#xff08;四&#xff09;【系统架构设计师】 系统架构设计高级技能 软件架构设计&#xff08;一&#xff09;【系统架构设计师…...

使用Matplotlib判断鼠标是否点击在当前线上的详细指南

系列文章目录 文章目录 系列文章目录前言一、导入必要的库二、创建图表和线条三、定义鼠标点击事件处理函数四、显示图表总结前言 Matplotlib是一个强大的绘图库,用于在Python中创建各种类型的图表和可视化。本文将详细介绍如何使用Matplotlib来判断鼠标是否点击在当前线上,…...

http get、post、put

HTTP协议定义了多种请求方法,用于不同的操作。最常见的有 GET、POST 和 PUT。 GET:GET 是最常用的方法,通常用于请求服务器发送某个资源。GET 请求只通过 URL 传送数据,数据信息会附在 URL 之后,以参数的形式附加。由于这种传送方式的限制,GET 请求的数据量较小,且安全性…...

仅使用 CSS 创建打字机动画效果

创建打字机效果比您想象的要容易。虽然实现这种效果的最常见方法是使用 JavaScript&#xff0c;但我们也可以使用纯 CSS 来创建我们的打字机动画。 在本文中&#xff0c;我们将了解如何仅使用 CSS 创建打字机动画效果。它简单、漂亮、容易。我们还将看看使用 CSS 与 JavaScrip…...

pytest fixture 高级使用

一、fixture中调用fixture 举例&#xff1a; 输出&#xff1a; 说明&#xff1a;登录fixture 作为参数传递到登出方法中&#xff0c;登录方法的返回值就可以被登出方法使用 二、在fixture中多参数的传递&#xff08;通过被调用函数传参&#xff09; 举例&#xff1a; 输出&a…...

远程控制医疗行业应用解析:如何满足医院合规需求?

远程控制医疗行业应用解析&#xff1a;如何满足医院合规需求&#xff1f; 作为一个起源于IT行业的技术&#xff0c;以远程桌面为基础的远程控制技术目前在医疗领域也已经有了比较广阔的应用前景&#xff0c;尤其是在医疗数字化系统/设备的远程运维场景&#xff0c;已经有了一些…...

【C++】开源:glog日志库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍glog日志库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次…...

使用 React Native CLI 创建项目

React Native 安装的先决条件和设置 需要掌握的知识点 掌握 JavaScript 基础知识掌握 React 相关基础知识掌握 TypeScript 相关基础知识 安装软件前需要首先安装Chocolatey。Chocolatey 是一种流行的 Windows 包管理器。 安装 nodejs 和 JDK choco install -y nodejs-lts …...

在R中将列表(list)转换为向量(vector)

问题&#xff1a;将列表中的所有元素“展平”&#xff0c;赋值给一个向量 解决方案&#xff1a;使用unlist()函数&#xff1b; 在许多情况下需要向量&#xff0c;例如&#xff0c;baseR中的许多统计函数需要一个向量作为输入&#xff0c;例如&#xff0c;如果iq.score是一个包…...

access怎么做进销存?借助access开发进销存管理应用

我不太推荐使用Access&#xff0c;因为他的缺点还是比较明显的&#xff1a; 1、软件自身限制 不能用于互联网&#xff1a;使用Access制作好的管理软件&#xff0c;访问页只能在局域网中使用&#xff1b;只能在Windows上运行&#xff1a;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&#xff08;message queue&#xff09;&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO先入先出&#xff0c;只不过队列中存放的内容是message而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递消息…...

MySQL不知道密码,直接修改密码

很简单&#xff0c;我们跳过验证&#xff0c;直接进去修改就好 修改配置文件 vim /etc/my.cnf在[mysqld]下直接添加配置 skip-grant-tables如图&#xff1a; 保存&#xff0c;退出即可。 重启服务 service mysqld restart进入MySQL #(直接点击回车&#xff0c;密码为空)…...

Win10关闭自动更新的方法和影响(Windows modules installer worker cpu占用过高)

目录 问题描述&#xff1a; Windows modules installer worker是什么&#xff1f; Win10关闭自动更新的方法&#xff1a; Win10关闭自动更新的影响&#xff1a; 问题描述&#xff1a; 有时我们在使用电脑的过程中会突然出现电脑运行过慢&#xff0c;发热&#xff0c;风扇噪…...

Xcode 基座打包

Xcode基座打包-APP更新版本内容无效 问题&#xff1a;解决&#xff1a; 问题&#xff1a; 使用xcode基座打包之后&#xff0c;上传到appstore进行提审发布。 用户在appstore商城进行更新下载&#xff0c;打开更新后的APP发现版本号是最新的&#xff0c;APP里面的其他内容还是上…...

最强自动化测试框架Playwright(9)- 下载文件

对于页面下载的每个附件&#xff0c;都会发出 page.on&#xff08;“download”&#xff09; 事件。 下载开始后&#xff0c;将发出下载事件。下载完成后&#xff0c;下载路径将变为可用 所有这些附件都下载到一个临时文件夹中。可以使用事件中的下载对象获取下载 URL、文件系…...

python爬虫实战(1)——网站小说

整本小说的爬取保存 目标大致思路页面的爬取解析—XPath请求网页内容解析网页内容正文爬取与解析单个页面数据获取爬取所有页面 数据清洗 经过学习基础&#xff0c;我们学以致用一下子&#xff0c;爬取小说&#xff0c;注意这个小说本身是免费的哦&#xff0c;以后再进阶。 本次…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...