PDA

View Full Version : مبتدی: راهنمایی در رابطه با mergesort



alex4040
یک شنبه 20 دی 1388, 23:44 عصر
سلام
دوستان در نظر دارم برنامه ای بنویسیم که پس از دریافت تعدادی آرایه از کاربر اونها را به صورت صعودی مرتب کنه و نمایش بده. سپس مجددا از کاربر داده جدید بگیره و اونها رو به لیست مرتب شده قبلی و در جای صحیح اضافه کند. این چیزی هست که تا بدین لحظه موفق به نوشتن اون شدم:



#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int a[10], i=0, j=0, n, t;

printf ("\n tedade vorodee: ");
scanf ("%d", &n);
printf ("\n");

for (i = 0; i
{
printf ("\n vorodi %d raa vared konid: ", (i+1));
scanf ("%d", &a[i]);
}

for (j=0 ; j<(n-1) ; j++)
{
for (i=0 ; i<(n-1) ; i++)
{
if (a[i+1] < a[i])
{
t = a[i];
a[i] = a[i + 1];
a[i + 1] = t;
}
}
}

printf ("\n tartibeh soodi: ");
for (i=0 ; i
{
printf (" %d", a[i]);
}

return 0;
}


اما از اینجا به بعدش رو نمی دونم که چه باید بکنم. خیلی لطف می کنید اگر بنده رو کمک کنید.

چطور می تونم با استفاده از mergsort آرایه جدید رو به لیست مرتب شده قبلی اضافه کنم.

ممنونم.

Salar Ashgi
دوشنبه 21 دی 1388, 00:12 صبح
سلام
پس از دریافت تعدادی آرایه از کاربر


شما از کاربر یه آرایه دریافت می کنید یا چند تا ؟

آیا منظورتون اینه که اول یک آرایه رو بگیریم ، اونو مرتب کنیم ، بعد آرایه دوم رو با آرایه اول بطور

مرتب ادغام کنیم ؟

hmrbesharat
دوشنبه 21 دی 1388, 00:39 صبح
سلام دوست عزیز من اینا اینچوری درستش کردم اگه جاییشا نفهمیدی بگو توضیج بدم

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main(void)
{ clrscr();
int a[10],a2[10], i=0, j=0, n, t;

//printf ("\n tedade vorodee: ");
//scanf ("%d", &n);
//printf ("\n");

for (i = 0; i<=9;i++)
{
printf ("\n vorodi %d raa vared konid: ", (i+1));
scanf ("%d", &a[i]);
}

for (i=0 ; i<=8 ; i++)
{
for (j=i+1 ; j<=9 ; j++)
{
if (a[i] > a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}

printf ("\n tartibeh soodi: ");
for (i=0 ; i<=9;i++)
{
printf (" %d", a[i]);
}
getch();
for (i = 0; i<=9;i++)
{
printf ("\n vorodi %d raa vared konid: ", (i+1));
scanf ("%d", &a2[i]);
}

for (i=0 ; i<=8 ; i++)
{
for (j=i+1 ; j<=9 ; j++)
{
if (a2[i] > a2[j])
{
t = a2[i];
a2[i] = a2[j];
a2[j] = t;
}
}
}

printf ("\n tartibeh soodi: ");
for (i=0 ; i<=9;i++)
{
printf (" %d", a2[i]);
}
getch();clrscr();
int c[20],aa=0,bb=0;
for(i=0;i<=19;i++){
if ((a[aa]<=a2[bb])&&(aa<=9)){
c[i]=a[aa];
aa++;
}else{
if (bb<=9){
c[i]=a2[bb];
bb++;}
}
}
printf("\n");
for(i=0;i<=19;i++)
printf("%5d",c[i]);

getch();
return 0;
}