一下子想不出来 救命

1. 数字排序

题目ID:9730必做题100分

最新提交:

Runtime Error

0 分

历史最高:

Runtime Error

0 分

时间限制: 200ms

空间限制: 65535kB

题目描述

时间:0.2s 空间:64M

【题目描述】

给定 N 个正整数,请将它们按照从小到大升序排列并输出。

【输入描述】

第一行是一个数字 N,代表共有 N 个数字。

接下来的 N 行每行包含一个正整数a[i]。(1≤N≤5000,1≤a[i]≤10^500)

【输出描述】

输出 N 行,为输入数据从小到大升序排序后的结果

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;

int main(){
int n;
cin>>n;
long double a[n];
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n-1;i++){
for(int j=1;j<=n-i;j++){
if(a[j]>a[j+1]){
swap(a[j],a[j+1]);
}
}

}
for(int k=1;k<=n;k++){
		cout<<std::fixed<<std::setprecision<<a[k];
		cout<<endl;
}
return 0;

}

a[i]小于10的500次方看了吗 @李欣容
给个样例

【样例输入】

3 2 3 1

【样例输出】

1 2 3

这道题再哪个课件里

基础算法拓展题单-02:冒泡、选择排序

类型:作业

我没有这个课件,但我知道这个要用字符串

不是写了using namespace std;了吗,为什么还要在前面加std::
还有你的去重在哪QWQ

为什么会有e+

别人说算大数能加…

#include <bits/stdc++.h>
using namespace std;
int n,max,y,z,sum=0;
string a[5005]={};
int main() {
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n-1;i++){
for(int j=1;j<=n-i;j++){
if(a[j].size()>a[j+1].size()||a[j].size()==a[j+1].size()&&a[j]>a[j+1]) swap(a[j],a[j+1]);
}
}
for(int i=1;i<=n;i++){
cout<<a[i]<<endl;
}
return 0;
}

能讲一下原理吗?有一点看不懂…谢谢。

它的代码用了冒泡排序,像 不干人事的楼某#%¥@#¥ 所说的

所以要把int类型的数字变成string类型的字符串,

核心比较部分这么写是因为字符串之间是按字典序的,
比如字符串LOU YI YANG HAO MEI,和CAI LAO SHI HAO SHUAI,

如果要比较,肯定是字符串2大,但是数字比较不是,先比有几个数位,在一个一个比

PS @王泽元 你不撤回AC代码我就举报了 :upside_down_face:

谢谢,我知道了,自己回去独立试一试。