PDA

View Full Version : مشکل در پیدا کردن بزرگترین عدد در آرایه



vb study
چهارشنبه 25 شهریور 1388, 15:25 عصر
با سلام
آیا می توان بزرگ ترین عدد در یک آرایه را بدون استفاده از دستور if پیدا کرد؟
مشکل من اینه که 300 آرایه دارم که باید بزرگترین عدد هر کدام را پیدا کنم ولی با استفاده از دستور if و مقایسه تک تک هر عدد با کل اعداد وقت زیادی می بره.
آیا برای آرایه ها دستور sort وجود داره؟
ممنون از راهنمایی تمام دوستان
:متفکر::متفکر::متفکر:

xxxxx_xxxxx
چهارشنبه 25 شهریور 1388, 21:01 عصر
دستوری که خودش آرایه رو sort کنه خیر وجود نداره. شما باید از طریق الگوریتم های مرتب سازی اقدام کنید. مثل مرتب سازی حبابی، merge sort، Quick Sort و ... هر کدام از این الگوریتم ها که بهینه تر هستند رو باید پیاده سازی کنید و برای هر 300 آرایه اعمال کنید.
اگر برای مرتب سازی از الگوریتمی استفاده کردید که مرتبه زمانی آن ( O ( n بود و یا بیشتر بود اونوقت بهتر همین هست که یکی یکی خونه های هر 300 آرایه رو چک کنید تا این که اونها رو مرتب و بعد بزرگترین رو پیدا کنید.
اما اگر مرتبه زمانی کمتر از ( O ( n بود میشه گفت مرتب سازی بهینه تر هست.

برای اطلاعات بیشتر در مورد الگوریتم های مرتب سازی و مرتبه زمانی اونها در بخش الگوریتم (http://barnamenevis.org/forum/forumdisplay.php?f=40) جستجو کنید.

vb study
پنج شنبه 26 شهریور 1388, 12:37 عصر
ممنون از راهنماییتون من به قسمتی که گفته بودین مراجعه کردم ولی خیلی از دستورات به زبان های دیگه بود و در کل چیزی متوجه نشدم :متفکر::متفکر::متفکر:
ممکنه براتون الگوریتم هایی را که نام برده بودین دستوراتشو به زبان vb6 بدین
ممنون میشم:خجالت:

vb study
پنج شنبه 26 شهریور 1388, 15:10 عصر
یکی کمک کنه دستور quick sortرو به زبان vb6به من برسونه
:گریه::گریه::گریه::گریه::گریه: :گریه::گریه::گریه::گریه::گریه: :گریه:
ارایه من سه ستون داره که بر اساس اعداد ستون سوم باید از بزرگتر به کوچکتر مرتب بشه باید چیکار کنم ؟
:گریه::گریه::گریه::گریه::گریه: :گریه::گریه::گریه::گریه::گریه: :گریه:

SamIran
پنج شنبه 26 شهریور 1388, 15:58 عصر
میشه بگی چرا 300 تا آرایه؟ یک بار باید بزرگترینشونو پیدا کنی؟

vb study
پنج شنبه 26 شهریور 1388, 16:08 عصر
حق با شماست اگر بتونم ارایه رو از بزرگ به کوچیک مرتب کنم قضیه حله ولی دستور quick sort رو نتونستم باری این کار به زبان vb6 پیدا کنم:گریه:

vb study
پنج شنبه 26 شهریور 1388, 17:17 عصر
چرا کسی کمک نمی کنه؟:عصبانی++::عصبانی++::عصبا ی++: :گریه::گریه::گریه:

SamIran
پنج شنبه 26 شهریور 1388, 20:37 عصر
ناراحتی نداره که! خودم برات می نویسم! صبر کن!:بوس:

SamIran
پنج شنبه 26 شهریور 1388, 20:52 عصر
آخه دوست عزیز یه کم بهتر جستجو کنی بهتره! این پست را برو درخواست دادم برات بزاره!
http://barnamenevis.org/forum/showthread.php?p=808120#post808120

vbhamed
جمعه 27 شهریور 1388, 01:28 صبح
سلام

آرايه هاتون كجا پر مي شن، مقدارشون رو از فايل مي گيرن يا جاي ديگه
شايد راههاي بهتري هم باشه !

Mbt925
جمعه 27 شهریور 1388, 21:13 عصر
باید جزئیات بیشتری رو در اختیار دوستان قرار بدید.

1. در صورتی که ورودی رو عدد به عدد دریافت می کنید، بهترین روش ساختن یک هیپ (Heap) هست. در صورتی که یک MAX Heap ایجاد کنید، می تونید هر بار با هزینه O(1) بزرگترین عدد رو خارج کنید.
در صورتی که چندین بار نیاز به بدست آوردن بزرگترین عدد دارید، این روش بهترین روش هست.

در صورتی که دریافت ورودی به صورت تدریجی انجام میشه، استفاده از روش درجی (Insertion Sort) هم برای مرتب کردن ورودی مناسبه.

2. در صورتی که فقط یک بار می خواید بزرگترین عدد رو از هر آرایه پیدا کنید، هزینه مرتب سازی سریع (Quick Sort) و ساختن یک Heap هر دو یکسانه ( O(nLogn) ).

vb study
دوشنبه 30 شهریور 1388, 11:48 صبح
با سلام به تمام دوستان
ممنون از کمک همگیتون
با راهنمایی های شما مشکلم حل شد:تشویق::تشویق::تشویق: