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