您的位置:首页 > 其它

归并排序1

2013-12-16 13:45 288 查看
#include<stdio.h>

void merge_sort(int* A, int x, int y, int* T)
{
if(y - x > 1)
{
int m = x + (y - x)/2;
int p = x, q = m, i = x;
merge_sort(A, x, m, T);
merge_sort(A, m, y, T);
while(p < m|| q < y)
{
if(q >= y || (p < m && A[p] <= A[q])) T[i++] = A[p++];
else T[i++] = A[q++];
}
for(i = x; i < y; i++) A[i] = T[i];
}
}

int main()
{
int a[1000], t[1000], n, i;
scanf("%d", &n);
for(i = 0; i < n; i++) scanf("%d", &a[i]);
merge_sort(a, 0, n, t);
for(i = 0; i < n; i++) printf("%d ", a[i]);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: