ACM准备(1)-排序

ACM准备(1)-排序

冒泡排序

#include <bits/stdc++.h>

typedef long long ll;

const size_t _Siz = 1003020;

ll a[_Siz] = { 0 };

ll nextInt() // 读入优化
{
	ll num = 0;
	char c;
	bool flag = false;
	while ((c = std::getchar()) == ' ' || c == '\r' || c == '\n' || c == '\t');
	if (c == '-')
		flag = true;
	else
		num = c - 48;
	while (std::isdigit(c = std::getchar()))
		num = num * 10 + c - 48;
	return (flag ? -1 : 1) * num;
}

void bubble_sort(int *a, int Left, int Right)
{
	for (int i = Left; i <= Right - 1; i++)
		for (int j = Left; j <= Right - i; j++)
			if (a[j] > a[j + 1])
				std::swap(a[j], a[j + 1]);
}

int main(int argc, char **argv)
{
	ll n, m;
	while (~std::scanf("%lld%lld", &n, &m))
	{
		std::memset(a, 0, sizeof a);
		for (int i = 1; i <= n; i++)
			a[i] = nextInt();
		bubble_sort(a, 1, n);
		for (int i = n; i >= n - m + 1; i--)
		{
			if (i == n - m + 1)
				std::cout << a[i] << '\n';
			else
				std::cout << a[i] << ' ';
		}
		// std::cout << '\n';
	}
	return 0;
}

测试结果:

HDOJ1425 TLE

Sort:

#include <bits/stdc++.h>

typedef long long ll;

const size_t _Siz = 1003020;

ll a[_Siz] = { 0 };
ll n, m;

ll nextInt()
{
	ll num = 0;
	char c;
	bool flag = false;
	while ((c = std::getchar()) == ' ' || c == '\r' || c == '\n' || c == '\t');
	if (c == '-')
		flag = true;
	else
		num = c - 48;
	while (std::isdigit(c = std::getchar()))
		num = num * 10 + c - 48;
	return (flag ? -1 : 1) * num;
}

int main(int argc, char **argv)
{
	while (~std::scanf("%lld%lld", &n, &m))
	{
		std::memset(a, 0, sizeof a);
		for (int i = 1; i <= n; i++)
			a[i] = nextInt();
		std::sort(a + 1, a + n + 1);
		for (int i = n; i >= n - m + 1; i--)
		{
			if (i == n - m + 1)
				std::cout << a[i] << '\n';
			else
				std::cout << a[i] << ' ';
		}
		std::cout << '\n';
	}
	return 0;
}

测试结果:

HDOJ1425 AC

发布了40 篇原创文章 · 获赞 0 · 访问量 5145

猜你喜欢

转载自blog.csdn.net/edward00324258/article/details/99675445