PDA

View Full Version : مشکل چاپ اعداد در Merge sort



paradise_human
دوشنبه 18 مهر 1390, 01:15 صبح
سلام.
مشکل این برنامه چیه که اعداد رو درست چاپ نمیکنه ؟؟!!
#include<iostream>
using namespace std;
void merge(int *a,int r,int p,int m)
{
int i=r,j=m+1,k=0,x,b[50];
while(i<=m&&j<=p)
{
if(a[i]<a[j])
{
b[k]=a[i];
k++;
i++;
}
else
{
b[k]=a[j];
k++;
j++;
}
}
while(i<=m)
{
b[k]=a[i];
i++;
k++;
}
while(j<=p)
{
b[k]=a[j];
j++;
k++;
}
for(x=r;x<p;x++)
a[x]=b[x];


}
void merge_sort(int *a,int r,int p)
{
int m;
if(r<p)
{
m=(r+p)/2;
merge_sort(a,r,m);
merge_sort(a,m+1,p);
merge(a,r,p,m);
}
}
void main()
{
int a[50],r,p,n,i;
cin>>n;
r=0;
p=n;
for(int i=0;i<n;i++)
cin>>a[i];
merge_sort(a,r,p);
for(i=0;i<n;i++)
cout<<a[i]<<" ";
}

paradise_human
سه شنبه 19 مهر 1390, 22:55 عصر
کسی نتونست کمک کنه ؟

Arcsinos
سه شنبه 19 مهر 1390, 23:56 عصر
مهندس اولین مشکلی که داره اینه که اسم متغییر هارو خوب انتخاب نکردی الان من نمیدونم low کدومه high کدومه mid کدومه تازه اگه بدونم هم خوندن کدت خیلی سخته و به جز خودت کس دیگه ای نمیتونه اشکال زدایی کنه . اینجا کد merg sort هست میتونی نگاش کنی و اشکالاتت رو رفع کنی .

http://www.cplusplus.happycodings.com/Algorithms/code17.html

موفق باشی

paradise_human
چهارشنبه 20 مهر 1390, 20:13 عصر
ممنون دوست عزیز ...