PDA

View Full Version : bfs ,merge & selection _sort



parvin_nik11
پنج شنبه 17 خرداد 1386, 21:19 عصر
سلام کسی این برنامه ها رو داره ؟
1:برنامه ی پیمایش سطحی به کمک صف
2: یک لیست از نامها را می خواهیم با 2 روش merge sort و selection sort مرتب کنیم و تعداد عملیات پایه ای را با هم مقاسه کنیم

emad_67
پنج شنبه 17 خرداد 1386, 21:54 عصر
برای مرتب سازی میتونی از دستور strcmp برای مقایسه دو رشته که در سر فایل string.h است استفاده کنی
منظور از تعداد عملیات پایه ای چیه؟

parvin_nik11
پنج شنبه 17 خرداد 1386, 23:01 عصر
ممکنه اگه برنامه شو دارید برام بفرستید چون من تو تعریف آرایه برای اسم ها مشکل دارم برنامه ی سورت فقط رو اعداد و یک کاراکتر جواب میده منظورم از عملیات پایه ای اینه که توی مرتب سازی مشخص کنه که چند بار عملیات ادغام و انتخابی برای سورت انجام میشه در واقع می خواد ثابت کنه کدوم سریعتره

someCoder
پنج شنبه 17 خرداد 1386, 23:10 عصر
من تو تعریف آرایه برای اسم ها مشکل دارم برنامه ی سورت فقط رو اعداد و یک کاراکتر جواب میده منظورم از عملیات پایه ای اینه که توی مرتب سازی مشخص کنه که چند بار عملیات ادغام و انتخابی برای سورت انجام میشه در واقع می خواد ثابت کنه کدوم سریعتره

تعریف آرایه از رشته:

char myArray[100][10] = {"String1", "String2", "String3", ..., "String100"};


مقایسه دو سطر از آرایه فوق:

strcmp(myArray[i], myArray[j])

بقیه اعمال هم شبیه همینه. هرجاشو مشکل داری بگو.

PS: در این مورد شرمندتم:
ممکنه اگه برنامه شو دارید برام بفرستید قوانین رو بخون

emad_67
جمعه 18 خرداد 1386, 09:32 صبح
ممکنه اگه برنامه شو دارید برام بفرستید چون من تو تعریف آرایه برای اسم ها مشکل دارم برنامه ی سورت فقط رو اعداد و یک کاراکتر جواب میده منظورم از عملیات پایه ای اینه که توی مرتب سازی مشخص کنه که چند بار عملیات ادغام و انتخابی برای سورت انجام میشه در واقع می خواد ثابت کنه کدوم سریعتره

من این برنامه رو گذاشتم که یک جمله از کاربر میگیره و کلمات اونو بر اساس حروف الفبا مرتب میکنه البته الگوریتم مرتب سازیش bubble sort هست


#include<iostream.h>
#include<string.h>
void main()
{
int x;
char s[80],*token,*word[80],*temp;
cin.getline(s,80);
token=strtok(s," ");
for(int i=0;token!=NULL;i++)
{
word[i]=token;
token=strtok(NULL," ");
}
for(int pass=0;pass<i-1;pass++)
for(int j=0;j<i-1;j++)
{
x=strcmp(word[j],word[j+1]);
if(x==1)
{
temp=word[j+1];
word[j+1]=word[j];
word[j]=temp;
}
}
cout<<"sort string by alphabet is :\n";
for(int k=0;k<i;k++)
cout<<word[k]<<endl;
}

من تو این مثال از آرایه های اشاره گر استفاده کردم که گفته دوست قبلی هم درسته
مب تونی به به این صورت تعریف کنی


char *word[80]={"string1","string2",...}

که در واقع یه آرایه کاراکتری از نوع اشاره گر تعریف میکنه که هر خونه اون اشاره گری به اولین حرف یک string است مثلا خونه 0ام از آرایه آدرس string1 رو در خودش داره که به حرف s اشاره میکنه