- 排序
归并排序
- 2023-7-10 15:04:38 @
#include<iostream>
#include<cstdio>
using namespace std;
const int N = 1E5 + 5;
int n, a[N], b[N];
#define debug cout << "DEBUG" << endl
void handle()
{
for(int i = 1; i <= n; i++)
cout << a[i] << " ";
cout << endl;
}
void mergeIt(int left, int mid, int right)
{
int i = left, j = mid + 1, cnt = left;
while(i <= mid && j <= right)
{
if(a[i] < a[j])
{
b[cnt++] = a[i++];
}
else b[cnt++] = a[j++];
}
while(i <= mid) b[cnt++] = a[i++];
while(j <= right) b[cnt++] = a[j++];
for(int i = left; i <= right; i++)
a[i] = b[i];
}
void ms(int left, int right)
{
if(left >= right) return;
int mid = left + (right - left) / 2;
ms(left, mid);
ms(mid + 1, right);
mergeIt(left, mid, right);
}
void initInput()
{
cin >> n;
for(int i = 1; i <= n; i++)
cin >> a[i];
ms(1, n);
}
int main(void)
{
initInput();
handle();
return 0;
}****
0 条评论
目前还没有评论...
信息
- ID
- 1085
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 186
- 已通过
- 53
- 上传者