這是基於Cormen書中給出的算法。我究竟做錯了什麼?MergeSort - 編譯但不提供任何輸出
#include <stdio.h>
#include <conio.h>
void mergesort(int a[],int,int);
void merge(int a[],int,int,int);
int main()
{
int i,num,a[50];
printf("Enter the number of elements : ");
scanf("%d",&num);
for(i=1;i<=num;i++)
{
printf("\n%d) ",i);
scanf("%d",&a[i]);
}
mergesort(a,1,num);
for(i=1;i<=num;i++)
{
printf("SoRTED ArrAy \n");
printf("\n%d) ",a[i]);
}
getch();
return 0;
}
void mergesort(int a[],int i, int k)
{
int j;
j=(i+k)/2;
while(i<k)
{
mergesort(a,i,j);
mergesort(a,j+1,k);
merge(a,i,j,k);
}
}
void merge(int a[],int p,int q,int r)
{
int i,j,k,n1,n2;
n1=q-p+1;
n2=r-q;
int l[n1],s[n2];
for(i=1;i<=n1;i++)
{
l[i]=a[p+i-1];
}
for(j=1;i<=n2;j++)
{
s[j]=a[q+j];
}
l[n1+1]=1000;
s[n2+1]=1000;
i=1;
j=1;
for(k=p;k<=r;k++)
{
if(l[k]<s[k])
{
a[k]=l[i];
i++;
}
else
{
a[k]=s[j];
j++;
}
}
}
「無輸出」是什麼意思? –
嘗試運行...它只是在接受輸入後才發作。 – zedai
您需要提供更多信息。你測試什麼輸入?你認爲什麼可能是錯誤的?你有沒有試過用調試器來瀏覽程序,看看會發生什麼?當你說「錯誤的產出」時,(1)你會得到什麼,以及(2)你期望什麼? –