XMUOJ--入门题--排序考试

文章讲述了小鲁在面对编程考试中的排序问题时,轻松解决并超越了不懂编程的老师所设置的难度。题目要求对多组整数进行升序排序,小鲁利用C++的sort函数高效地完成了任务。代码的时间复杂度为O(nlogn),适应于处理大量数据。
摘要由CSDN通过智能技术生成

排序考试

描述

处于某种原因,一点都不懂编程的某某系小迅老师竟然成功跳槽到计算机系来教大一新生如何编程。

看着这位在台上胡言乱语,水平比同学小华弱太多的老师,小鲁简直不忍直视。

那学期的期中考试,小讯老师出的题目竟然是:“请写一个排序算法给数组排序,结果按照升序输出。”

经过NQ49斩的小鲁分分钟就完成了代码。小讯老师一看,哎呀不得了,得提高期中考试难度。

他立刻把题目改为:“给定任意T组整数,每组整数都要按升序输出。”

小鲁笑了笑,原来这类题已经难不倒他了,原来他早就超过了大一上小讯老师的水平了!

小鲁水平进阶了,你做得到吗?

输入

第一行是整数T,表示一共有T组数据。

接下来T行,每行有N+1个数,第一个整数表示该行有N个待排序的数字。

整数N(1<=N<=1000000),T(1<=T<=100)。

输出

对于每组整数,按照升序输出排序结果,每个结果占一行。

输入样例 1 

3
4 412 120 5560 3760
5 576 66 35 99 88
4 127 100 510 380

输出样例 1

120 412 3760 5560
35 66 88 99 576
100 127 380 510

示例代码: 

#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
int main(){
	int T;
	cin>>T;  // 输入测试数据的组数
	
	while(T--){
		int n ,i ,a ;
		cin>>n;  // 输入当前组数据的长度n
		
		vector<int>nums;  // 创建一个整型向量nums用于存储当前组数据
		for(i=0;i< n ; i++){
			cin>>a;  // 输入当前组数据的元素
			nums.push_back(a);  // 将元素加入向量nums中
		}
		sort(nums.begin(),nums.end());  // 对向量nums进行排序
		
		for(i=0;i<n-1;i++)
			cout<<nums[i]<<" ";  // 输出排序后的元素(最后一个元素后面不输出空格)
		
		cout<<nums[i]<<endl;  // 输出最后一个元素并换行
	}
	
	return 0;
}

 思路:

在main函数中,首先输入测试数据的组数T。然后,使用一个循环来读取和处理每组数据。循环会执行T次,每次读取一组数据并进行排序后输出。在循环内部,首先输入当前组数据的长度n。然后,创建一个整型向量nums用于存储当前组数据。接下来,使用一个循环来输入当前组数据的元素,并将元素加入向量nums中。之后,使用sort函数对向量nums进行排序。接着,使用一个循环来输出排序后的元素,最后一个元素后面不输出空格。最后,通过cout输出最后一个元素并换行。
在所有组数据处理完成后,返回0表示程序执行完成。这段代码的时间复杂度取决于排序操作,为O(nlogn),其中n为当前组数据的长度。由于需要处理多组数据,总的时间复杂度可以认为是O(T * nlogn),其中T为测试数据的组数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值