社区讨论
40分,大佬帮忙看看
P1271【深基9.例1】选举学生会参与者 7已保存回复 8
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 8 条
- 当前快照
- 1 份
- 快照标识符
- @m1di0j5a
- 此快照首次捕获于
- 2024/09/22 19:31 去年
- 此快照最后确认于
- 2025/11/04 19:53 4 个月前
C
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int n, m;
int a[2000005], b[2000005], c[2000005], d[2000005];
void px(int r,int l)
{
if (r >= l)
{
return;
}
int mid = rand() % (l - r + 1) + r;
int tb = 0, tc = 0, td = 0;
for (int i = 1; i <= m; i++)
{
if (a[i] < a[mid])
{
b[++tb] = a[i];
}
else if (a[i] > a[mid])
{
c[++tc] = a[i];
}
else
{
d[++td] = a[i];
}
}
for (int i = 1; i <= tb; i++)
{
a[i + r - 1] = b[i];
}
for (int i = 1; i <= td; i++)
{
a[i + r + tb - 1] = d[i];
}
for (int i = 1; i <= tc; i++)
{
a[i + r + tb + td - 1] = c[i];
}
px(r, r + tb - 1);
px(r + tb + td, l);
}
int main()
{
srand((unsigned int)time(0));
scanf("%d%d", &n, &m);
for (int i = 1; i <= m; i++)
{
scanf("%d", &a[i]);
}
px(1, m);
for (int i = 1; i <= m; i++)
{
printf("%d ", a[i]);
}
return 0;
}
回复
共 8 条回复,欢迎继续交流。
正在加载回复...