洛谷P1177 【模板】排序

2023 / 10 / 31

题目描述

将读入的 $N$ 个数从小到大排序后输出。

输入格式

第一行为一个正整数 $N$。

第二行包含 $N$ 个空格隔开的正整数 $a_i$,为你需要进行排序的数。

输出格式

将给定的 $N$ 个数从小到大输出,数之间空格隔开,行末换行且无空格。

样例 #1

样例输入 #1

5
4 2 4 5 1

样例输出 #1

1 2 4 4 5

提示

对于 $20%$ 的数据,有 $1 \leq N \leq 10^3$;

对于 $100%$ 的数据,有 $1 \leq N \leq 10^5$,$1 \le a_i \le 10^9$。

离谱题解

40 分

#include <bits/stdc++.h> using namespace std; int n, a[100020]; void qsort(int n[], int l, int r) { int i = l, j = r, flag = a[(l + r) / 2]; do { while (n[i] < flag) i++; while (n[j] > flag) j--; if (i <= j) swap(n[i++], n[j--]); } while (i <= j); if (i < j) qsort(n, l, j); if (i < r) qsort(n, i, r); } int main() { cin >> n; for (int i = 0; i < n; i++) scanf("%d", &a[i]); qsort(a, 0, n - 1); for (int i = 0; i < n; i++) cout << a[i] << ' '; return 0; }

AC

#include <bits/stdc++.h> using namespace std; int n, a[100010]; /*void qsort(int n[], int l, int r) { int i = l, j = r, flag = a[(l + r) / 2]; do { while (n[i] < flag) i++; while (n[j] > flag) j--; if (i <= j) swap(n[i++], n[j--]); } while (i <= j); if (i < j) qsort(n, l, j); if (i < r) qsort(n, i, r); }*/ int main() { cin >> n; for (int i = 0; i < n; i++) cin >> a[i]; //qsort(a, 0, n - 1); sort(a, a + n); for (int i = 0; i < n; i++) cout << a[i] << ' '; return 0; }