文章
36
粉丝
505
获赞
55
访问
372.6k
这题虽然说sort可以直接过,但这题毕竟是模板题,还是推荐手写下快排练习练习,了解快排的原理。
手写快排:
#include<iostream>
using namespace std;
void quicksort(int a[], int l, int r)//手写快排
{
int i = l, j = r, temp, flag = a[(l + r) / 2];
do
{
while (a[i] < flag)i++;
while (a[j] > flag)j--;
if (i <= j)
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
} while (i <= j);
if (l < j)quicksort(a, l, j);
if (i < r)quicksort(a, i, r);
}
int a[100100];
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i];
quicksort(a, 0, n - 1);
for (int i = 0; i < n; i++)
cout << a[i] << " ";
return 0;
}
STL:(偷懒的做法)
#include <bits/stdc++.h>
using namespace std;
int n, a[100100];
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
sort(a + 1, a + n + 1);
for (int i = 1; i <= n; i++)
printf("%d ", a[i]);
return 0;
}
登录后发布评论
暂无评论,来抢沙发