如何对顺序为 300000 的数组进行排序?
How to sort an array of order 300000?
我是竞争性编程的新手,我在 Codeforces 上遇到了 ICPC 挑战赛。第一个问题是 https://codeforces.com/contest/1376/problem/A1 这个,他们给的文件有 30000 个输入。他们基本上要求您按非递减顺序对整数列表进行排序。
我从实现冒泡排序代码开始,然后使用 freopen("sort.in","r",stdin)
提供输入文件 sort.in
,然后使用 freopen("output.out","w",stdout)
函数创建输出文件。这对于像 50-100 这样的较少输入很好用,但是当我给出包含大约 30000 个输入的输入文件时,输出文件是空的。我不明白为什么会这样。
我有两个问题,
- 使用哪种排序算法?
- 为什么以下代码没有将排序后的数组输出到
output.out
文件?
link 到 sort.in
文件:https://assets.codeforces.com/files/6f8518a9aaa619e7/sort.zip
这是我的代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
freopen("sort.in", "r", stdin);
freopen("output.out", "w", stdout);
int n, c, temp, arr[500000];
cin >> n;
c=n;
for(int i=0; i<n; i++){
cin >> arr[i];
}
while(n!=0){
for(int i=0; i<n-1; i++){
if(n)
if(arr[i]>arr[i+1]){
temp = arr[i+1];
arr[i+1] = arr[i];
arr[i] = temp;
}
}
n=n-1;
}
for(int i=0; i<c; i++){
cout << arr[i] << " ";
}
return 0;
}
您可以手动实现归并排序算法。或者直接调用内置的C++排序函数。
#include <bits/stdc++.h>
using namespace std;
int main(){
freopen("sort.in", "r", stdin);
freopen("output.out", "w", stdout);
int n, , arr[500000];
cin >> n;
for(int i=0; i<n; i++){
cin >> arr[i];
}
sort( ar, ar + n );
for(int i=0; i<n; i++){
cout << arr[i] << " ";
}
return 0;
}
我是竞争性编程的新手,我在 Codeforces 上遇到了 ICPC 挑战赛。第一个问题是 https://codeforces.com/contest/1376/problem/A1 这个,他们给的文件有 30000 个输入。他们基本上要求您按非递减顺序对整数列表进行排序。
我从实现冒泡排序代码开始,然后使用 freopen("sort.in","r",stdin)
提供输入文件 sort.in
,然后使用 freopen("output.out","w",stdout)
函数创建输出文件。这对于像 50-100 这样的较少输入很好用,但是当我给出包含大约 30000 个输入的输入文件时,输出文件是空的。我不明白为什么会这样。
我有两个问题,
- 使用哪种排序算法?
- 为什么以下代码没有将排序后的数组输出到
output.out
文件?
link 到 sort.in
文件:https://assets.codeforces.com/files/6f8518a9aaa619e7/sort.zip
这是我的代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
freopen("sort.in", "r", stdin);
freopen("output.out", "w", stdout);
int n, c, temp, arr[500000];
cin >> n;
c=n;
for(int i=0; i<n; i++){
cin >> arr[i];
}
while(n!=0){
for(int i=0; i<n-1; i++){
if(n)
if(arr[i]>arr[i+1]){
temp = arr[i+1];
arr[i+1] = arr[i];
arr[i] = temp;
}
}
n=n-1;
}
for(int i=0; i<c; i++){
cout << arr[i] << " ";
}
return 0;
}
您可以手动实现归并排序算法。或者直接调用内置的C++排序函数。
#include <bits/stdc++.h>
using namespace std;
int main(){
freopen("sort.in", "r", stdin);
freopen("output.out", "w", stdout);
int n, , arr[500000];
cin >> n;
for(int i=0; i<n; i++){
cin >> arr[i];
}
sort( ar, ar + n );
for(int i=0; i<n; i++){
cout << arr[i] << " ";
}
return 0;
}