PDA

View Full Version : سوال: حل الگوریتم با روشی دیگر



blue_lotus
سه شنبه 25 فروردین 1388, 22:14 عصر
با سلام

سوالی که برام پیش اومده این هست که آیا راهی وجود داره که ما از بین به طور مثال هفت خانه ی پرشده از عدد تشخیص بدیم که کدام خانه بزرگترین و کدام خانه کوچکترین است؟

مثلا ما 7 خانه داریم با نام های a,b,c,d,e,f,g از ورودیمون هفت عدد دریافت می کنیم به طور مثال درجه حرارت روزهای هفته یا هرچیز دیگه ای.

روشی وجود داره که بشه تشخیص داد بزرگترین یا کوچیکترینشون کدوم هستن؟

این موضوع از اونجایی در ذهنم شکل گرفت که در یک جایی بدون حلقه تکرار باید یکی یکی خونه هارو باهم چک می کردم و طبعا طولانی و خسته کننده هم بود.

روش هایی که خودم به ذهنم رسیده بعد از مقایسه ی دو متغییر اولی ( بدون حلقه تکرار که شرط هارو چک کنه ) بیایم دو به دو بقیه متغیر هارو چک کنیم و یک خونه براشون در نظر بگیریم جداگونه و در max,min قرارشون بدیم و بعد max,min هارو باهم چک کنیم و در آخر مقدار رو به خروجی ارسال کنیم.

اگر این روش مشکلی داره دوستانه با تجربه لطف کنن اگر میشه راهنمایی کنن.

پ.ن= خودم فکر می کنم باید یک فرمول ریاضی وجود داشته باشه که با تقسیم یا جمع بهم این اعداد بشه فهمید و مسیری به این طولانی ای رو نرفت، ولی هنوز پیداش نکردم:لبخندساده:

متشکرم

newamir
سه شنبه 25 فروردین 1388, 22:54 عصر
برای پیدا کردن ماکزیمم n تا عدد حداقل n-1 مقایسه لازمه. خیلی هم فرق نمیکنه که دوتا دوتا با هم مقایسه بشن، یا اینکه از اولی تا آخری پویش بکنی و ماکزیمم رو حساب کنی. فرمول ریاضی هم مثلا برای دو عدد هست:
max(a, b) = (abs(a-b)+abs(a+b))/2;
که abs همون قدرمطلقه. میشه این فرمول رو برای بیشتر از دو عدد هم تعمیم داد، اما: اولا قدرمطلق تو کامپیوتر با همون مقایسه پیاده سازی میشه، دوما استفاده از این روش کار رو مشکل تر هم میکنه. پس راه معقول همون ماکزیمم گیری خودمونه. مثلا میشه نوشت:



int max = a;
if(b > max)
max = b;
if(c > max)
max = c;
if(d > max)
max = d;
if(e> max)
max = e;
if(f > max)
max = f;
if(g > max)
max = g;

اینم بدون استفاده از حلقه ها. البته نمی دونم اصلا چه لزومی داره از حلقه استفاده نکنی؟!

blue_lotus
سه شنبه 25 فروردین 1388, 23:41 عصر
سلام

تشکر از شما دوست عزیز

دنبال راه حلی به غیر از راه حل های متداول بودم برای مسئله ای که استادی بیان کرده بود که تنها روش پیاده سازیش همین هست.
البته برای برنامه نوشتن یا الگوریتم خاصی نیست ( که کاری عبث و طولانی میشه هم از نظر ساختار هم از نظر سرعت و پردازش و مدیریت حافظه) تنها برای روشن شدن ذهن خودم و اینکه راه های متفاوتی رو پیدا کنم این موضوع رو مطرح کردم.

اگر کس دیگه ای از دوستان راهی به ذهنشون رسید بیان کنن خوشحال میشم.

باز هم ممنون

pesar irooni
چهارشنبه 26 فروردین 1388, 00:22 صبح
روشی وجود داره که بین n عدد میتونیم مینیمم و ماکزیمم رو با 1.5n-2 مقایسه بدست بیاریم که حدودا یه ماه پیش یه تاپیک با این عنوان داشتیم که اینجا گذاشتم.
http://www.barnamenevis.org/forum/showthread.php?t=149710
این بهترین روشیه که تا حالا شناخته شده چون روش اصلی نیاز به 2n-2 مقایسه داره. این روش تو همون تاپیکی که گفتم توضیح دادم که با مقایسه جفت به جفت عناصر کار داره. میتونی بری ببینیش.
اما اگه به دنبال یه روش متفاوت میگردی روشیهایی هست که بدون مقایسه عناصر در زمان خطی (با یه شرط کوچولو) یه آرایه رو مرتب میکنه.(که ماکزیمم و مینیمم اون معلوم میشه)

cancer140
دوشنبه 18 مهر 1390, 21:48 عصر
سلام ميشه فلوچارت برنامه اي بكشيد كه ماكزيمم 4 عددو بدون استفاده از لوپ به دست بياره ؟

و يه فلوچارت ديگه اينكه ماكزيمم دوم چندتا عددو پيدا كنه
ممنون