洛谷P1177 【模板】排序
次阅读
3 min read
题目描述
将读入的 个数从小到大排序后输出。
输入格式
第一行为一个正整数 。
第二行包含 个空格隔开的正整数 ,为你需要进行排序的数。
输出格式
将给定的 个数从小到大输出,数之间空格隔开,行末换行且无空格。
样例 #1
样例输入 #1
5
4 2 4 5 1
样例输出 #1
1 2 4 4 5
提示
对于 的数据,有 ;
对于 的数据,有 ,。
离谱题解
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;
}