PDA

View Full Version : سوال: مرتب سازی ادغامی



elahe software
جمعه 09 تیر 1391, 10:18 صبح
سلام من این کد رو نوشتم اما نمیدونم چرا جواب رو درست چاپ نمی کنه!!!!
کد رو براتون میذارم اگه کمکم کنید ممنون میشم!!! :افسرده:

#include<iostream.h>
#include<conio.h>

void merge(int p,int m,int A[],int B[],int s[])
{
int i,j,k;
i=j=k=1;
while(i<=p && j<=m){
if(A[i]<B[j])
{s[k]=A[i];
i++;}
else
{s[k]=B[j];
j++;}
k++;
}
if(i>p)
while(j<=m)
{s[k]=B[i];
k++;
j++;}
else if (j>m)
while (i<=p)
{s[k]=A[i];
k++;
i++;}
}
void mergesort(int n,int s[])
{
int p=n/2,m=n-p;
int A[2],B[3];
if(n>1){
for(int i=0;i<p;i++)
A[i]=s[i];
for(int j=0;j<m;j++)
B[j]=s[p+j];
mergesort(p,A);
mergesort(m,B);
merge(p,m,A,B,s);
}

}
int main()
{
const int n=5;
int array[n];
for(int i=0;i<n;i++)
{
cout<<"Enter number"<<(i+1)<<":";
cin >> array[i];
}
mergesort(n,array);
getch();
return 0;
}

مسعود اقدسی فام
جمعه 09 تیر 1391, 12:37 عصر
کل کذ رو بررسی نکردم. اما چرا خط هفتم مقادیر اولیه اندیس‌ها یک شده؟ زبان ++C اندیس آرایه از صفر شروع می‌شه.

asal.7
جمعه 09 تیر 1391, 19:56 عصر
به نکته ی خوبی اشاره کردید اما در کل نتیجه ی مرتب سازی اجرا نمیشه!

mahdi0khosravi
سه شنبه 13 تیر 1391, 23:21 عصر
راستشو بگم من کل کد رو نخوندم ولی خودم قبلا تو زدن این کد مشکل داشتم. مشکل اصلی معمولا سر باز و بسته گرفتنه آرایه هست. معمولا آرایه ها رو بسته-باز (اولش هست آخرش نیست!) در نظر می گیرن. فکر کنم مشکل از این باشه