帮忙看一下此归并排序

来源:百度知道 编辑:UC知道 时间:2024/06/19 18:46:40
我写的源程序:
#include<stdio.h>
int hebin(int *a,int *b,int *arr,int i,int j)
{
int k,l,m;
if(a[i-1]>b[i-1+j])
{
for(k=0;k<i;k++)
{
arr[k]=a[k];
}
for(l=0;l<j;l++)
{
arr[l+i]=b[l];
}
}
else
{
m=i;
for(k=i+j-1;k>j-1;k--)
{
arr[k]=a[m];
m--;
}
for(k=0;k<j-1;k++)
arr[k]=b[k];
}
}

void paixu(int *arr,int n)
{
int i,j,c;

if(n>=2)
{
i=n/2;
j=n-i;

int a[i],b[j];

for(c=0;c<i;c++)
a[c]=arr[c];
for(c=i;c<n;c++)
b[c]=arr[c];

paixu(a,i);
paixu(b,j);

hebin(a,b,arr,i,j);
}
}
int main()
{
int n,i;
scanf(&q

#include<stdio.h>
#include<stdlib.h>
int hebin(int *arr,int begin,int middle,int end)
{
int i=begin,j=middle+1;
int k=0;
int *p=(int*)malloc((end-begin+1)*sizeof(int));
while(i<=middle&&j<=end)
{
if(arr[i]<arr[j])
p[k++]=arr[j++];
else
p[k++]=arr[i++];
}
while(i<=middle)
p[k++]=arr[i++];
while(j<=end)
p[k++]=arr[j++];
k=0;
for(i=begin;i<=end;i++)
arr[i]=p[k++];
free(p);
}

void paixu(int *arr,int begin,int end)
{
int n=end-begin+1;
int middle=(begin+end)/2;
int tmp;
if(n>2)
{
paixu(arr,begin,middle);
paixu(arr,middle+1,end);
}
else
if(n==2)
if(arr[begin]<arr[end])
{
tmp=arr[beg