小米手机nfc复制门禁卡:这个归并排序为什么在DEV下运行错误?

来源:百度文库 编辑:高考问答 时间:2024/04/26 17:31:18
#include<stdio.h>
#include<stdlib.h>
int dat[32];
//"ms" is "merge sort" ; "m"="merge"
void ms(int left,int right);
void m(int left,int mid,int right);
main()
{
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&dat[i]);
ms(1,n);
for(i=1;i<=n;i++)
printf("solution:%d",dat[i]);
getch();
}
void ms(int left,int right)
{
int mid;
if(left==right)
return ;
mid=(left+right)/2;
ms(left,mid);
ms(mid+1,right);
m(left,mid,right);
}
void m(int left,int mid,int right)
{
int i,j,k=0,bin[16];
i=left; j=mid+1;
while(i<1+mid&&j<i+right)
{
while(dat[i]<=dat[j]&&i<1+mid)
bin[k++]=dat[i++];
while(j<1+right)
bin[k++]=dat[i++];
}
for(i=1;i<=k;i++)
dat[i]=bin[i];
}