#include<stdio.h>
#include<stdlib.h>
void merge(int a[],int l,int m,int r)
{
int i,j,k;
int n1= m - l + 1;
int n2= r - m;
int L[n1],R[n2];
for(i=0;i<n1;i++)
L[i]=a[l+i];
for(j=0;j<n2;j++)
R[j]=a[m + 1+ j];
i=0;j=0;k=l;
while(i<n1 && j<n2)
{
if(L[i]<R[j])
{
a[k]=L[i];
i++;
}
else
{
a[k]=R[j];
j++;
}
k++;
}
while(i<n1)
{
a[k]=L[i];
i++;
k++;
}
while(j<n2)
{
a[k]=R[j];
j++;
k++;
}
}
void mergeSort(int a[],int l,int r)
{
if(l<r)
{
int m = l+(r-1)/2;
mergeSort(a,l,m);
mergeSort(a,m+1,r);
merge(a,l,m,r);
}
}
void printArray(int a[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
int main()
{
int a[]= {
12,76,34,45,63,98
};
int n = sizeof(a)/sizeof(a[0]);
printf("The element entered in array ");
printArray(a,n);
mergeSort(a,0,n-1);
printf("The element after sorting ");
printArray(a,n);
return 0;
}
これはマージソートプログラムです。なぜ誰かが説明できればランタイムエラーを起こすのですか?このプログラムにエラーはありませんマージソートプログラム
私はこれを10回試しました。そして解決策を見つけることができません。あなたがmergesort(a, 3, 5)
を呼び出すと
"なぜ誰かが説明できればランタイムエラー**を出すのですか?**このプログラムには**エラーはありません" - あなたは自分自身と矛盾します!だから、それは何のエラーですか?それから[ask]を見て、私たちはデバッグサービスをしていません。デバッガを使用して、エラーが発生した特定の箇所を追跡します。変数を見て、まず自分自身を試してみてください。 – Olaf
@Olaf - 矛盾する部分に同意します。しかし、「なぜこのコードは動作していないのですか」という質問は完全にOKです。その質問には、エラーを再現するための完全なコードベースが含まれている必要があります。この質問はそうだったので、それはOKの質問です。 – 4386427
@ 4386427:それらは大丈夫ではありません。リンクをたどってCVページをご覧ください!これは非常に明確です: "デバッグの助けを求める質問("なぜこのコードは動作しないのですか? ")には、**目的の動作**、**特定の問題**またはエラーとそれを再現するのに必要な最短コード疑問文そのもの**明確な問題文がない質問は、他の読者にとっては有用ではありません。**参照:最小限で完全で検証可能な例を作成するには" – Olaf