這裏是我的簡單邏輯合併排序Turbo C++。我無法弄清邏輯中的錯誤。我從算法寫的。請告訴我我哪裏錯了。謝謝 ! 邏輯很簡單,請不要更改邏輯或插入指針。我正在獲得某種垃圾值。在輸入5個數字時,我得到5個隨機值(可能是垃圾)。合併排序給我無效輸出(Turbo C++)
#include<iostream.h>
#include<conio.h>
void merge(int A[], int p,int q, int r)
{
int n1=q-p+1;
int n2=r-q;
int i,j,L[50],R[50];
for(i=0;i<n1;i++)
L[i]=A[p+i];
for(j=0;j<n2;j++)
R[j]=A[q+j+1];
L[n1+1]=6500;
R[n2+1]=6500;
i=0;j=0;
for(int k=p;k<r;k++)
{ if(L[i]<=R[j])
{
A[k]=L[i];
i++;
}
else
{
A[k]=R[j];
j++;
}
}
}
void merge_sort(int A[],int p, int r)
{
if(p<r)
{
int q=(p+r)/2;
merge_sort(A,p,q);
merge_sort(A,q+1,r);
merge(A,p,q,r);
}
}
void main()
{
clrscr();
int A[5];
cout<<"Enter the elements"<<endl;
for(int i=0;i<5;i++)
cin>>A[i];
merge_sort(A,0,4);
for(i=0;i<5;i++)
cout<<A[i]<<" ";
getch();
}
你絕對肯定上述編譯代碼?花了我不少修改,使其在ideone編譯:https://ideone.com/BYjvD4 –
在Turbo C++上編譯...在那裏工作101%。對不起,但在我們的大學,我們仍然在Windows 10上使用turbo C++。 –
編輯了這個問題。爲什麼下來投了個問題:( –