文章

36

粉丝

505

获赞

55

访问

372.6k

头像
题解:快速排序
P1590 杭州电子科技大学2019年机试题
发布于2020年3月23日 00:14
阅读数 10.2k

这题虽然说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;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发