# 排序 ## 题目描述 给定 $n$ 个长为 $20$ 的数列,对这些数列从小到大进行排序 定义数列大小比较方式:先比较首项,首项小的数列小,首项一样比较第二项,以此类推 ## 输入格式 输入数据有 $n+1$ 行 第一行一个整数 $n$ 接下来 $n$ 行,每行 $20$ 个用空格隔开的 $0$~$9$ 的正整数,表示一个数列 ## 输出格式 输出有 $n$ 行 每一行是 $20$ 个用空格隔开的 $0$~$9$ 的正整数,表示这些数列按指定规则排序后的状态 ## 样例 #1 ### 样例输入 #1 ``` 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 8 ``` ### 样例输出 #1 ``` 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 8 ``` ## 提示 对于 $30$% 的数据,$n≤10$ 对于 $60$% 的数据,$n≤1,000$ 对于 $100$% 的数据,$n≤100,000$c++代码
时间: 2024-01-03 14:02:46 浏览: 142
排序算法(用C++描述)
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(vector<int>& a, vector<int>& b) {
for (int i = 0; i < 20; i++) {
if (a[i] < b[i]) {
return true;
} else if (a[i] > b[i]) {
return false;
}
}
return true;
}
int main() {
int n;
cin >> n;
vector<vector<int>> sequences(n, vector<int>(20));
for (int i = 0; i < n; i++) {
for (int j = 0; j < 20; j++) {
cin >> sequences[i][j];
}
}
sort(sequences.begin(), sequences.end(), compare);
for (int i = 0; i < n; i++) {
for (int j = 0; j < 20; j++) {
cout << sequences[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
阅读全文