归并排序哪里错了?
#include"stdio.h"#include"string.h"
typedef struct
{ int vec[10];
int len;
}node;
//归并排序 s1,s2在r1中
//s1,s2是2个数组,放在r1中。 比较r1中的元素,按照“取小”原则复制到r2中
//参数: 原串,归并后置放的串, 起始,中,末位置
void PaiXu_GuiBing(node *r1,node *r2,int l,int m,int h)
{ int i,j,k;
k=l; //k是r2的指示器,i,j分别为s1,s2的指示器
i=l; //s1的起始
j=m+1; //s2的起始
while(i<=m&&j<=h)
{ if(r1->vec[i]<=r1->vec[j]) { r2->vec[k]=r1->vec[i]; i++; }
else { r2->vec[k]=r1->vec[j]; j++; }
k++;
}
if(i>m) //s1结束
while(j<=h)
{ r2->vec[k]=r1->vec[j]; //将s2复制到r2
j++; k++;
}
else
while(i<=m)
{ r2->vec[k]=r1->vec[i]; //将串1复制到r2
i++; k++;
}
}
main()
{ node *r1,*r2;
int x,i,k;
r1=(node*)malloc(sizeof(node));
r2=(node*)malloc(sizeof(node));
for(i=0;i<5;i++)
scanf("%d",&r1->vec[i]);
for(;i<10;i++)
scanf("%d",&r1->vec[i]);
r1->len=10;
r2->len=10;
PaiXu_GuiBing(r1,r2,0,4,9);
printf("\n");
for(i=0;i<10;i++)
printf("%d",r2->vec[i]);
}
//谁能调通就把200块拿去~
[此贴子已经被作者于2005-3-31 16:03:48编辑过]