کمپیوټرونه, پروګرامونې
په پروګرام کې ترتیب کول: د "بلب" لخوا ترتیب کول
د بلبل لخوا ترتیب کول نه یواځې د چټک ترین میتود په توګه نه ګڼل کیږي، بلکه، دا د امر کولو ورو ورو لارو لیست بندوي. په هرصورت، دا د هغې ګټې هم لري. نو، د بلبلا د طریقې ترتیب کول د ستونزې لپاره خورا منطقي او طبی حل دی، که تاسو اړتیا لرئ چې په یو مشخص ترتیب کې عناصر تنظیم کړئ. یو عادي سړی، د مثال په توګه، دا به د لاس په واسطه استعمال کړي، په ساده ډول د انترنیټ له لارې.
دا غیر معمولی نوم چېرته راغلی دی؟
د میتود نوم په اوبو کې د هوایی بلبونو سره د ارزوین په کارولو اختراع شوی و. دا یو استعفا ده. لکه څنګه چې کوچني هوایي بلبلونه لوړ شي - ځکه چې د دوی کثافت د مايع په پرتله لوړ وي (په دې حالت کې - اوبه)، او د صف هر عنصر، کوچنی دا ارزښت لري، بلکه دا په تدريجي توګه د شمېرو د لیست پیل ته لاره پیدا کوي.
د الګوریتم تفصیل
د بلبل ترتیب کول په لاندې ډول ترسره کیږي:
- لومړی پاس: د شمیرو ارقام دوه په کې اخیستل شوي او همدارنګه د جوړو په پرتله هم دي. که په ځینو دوو عناصرو کې لومړی ارزښت د دویمې برخې څخه ډیر وي، دا پروګرام د ځایونو تبادله کوي؛
- نو ځکه، تر ټولو لویه برخه د سر په پای کې ده. پداسې حال کې چې ټول نور عناصر پاتې دي، لکه څنګه چې په غیر معمولي امر کې وو او نور ډوله اړتیاو ته اړتیا لرئ؛
- له همدې کبله، دویم پاسپورټ ته اړتیا ده: دا د انجمن لخوا د تیرو یو (مخکې مخکې بیان شوی) سره تولید شوی او یو شمیر موازنې لري.
- په پاس کې، د دریم ټکي پرتله د دویمې برخې څخه کم دی، او ډوډۍ د لومړی په پرتله دوه برابره ده. او همداسې
- موږ لنډیز کوو چې هر پاسان لري (صف، یو ځانګړی شمېره) مائنس (د پاسه شمېره) پرتله کول.
د راتلونکي پروګرام لنډیز الګوریتم په لاندې ډول لیکل کیدی شي:
- د شمېرو شمېره معلومه شوه تر هغه چې دوه شمېره ونه موندل شوه، دويمه برخه بايد د لومړي څخه لوړ وي؛
- په سمه توګه د سر د یو بل عناصر په اړه واقع شوي، پروګرام پروګرام بدل شوی.
Pseudocode د تشریح الګوریتم پر اساس
تر ټولو ساده تطبیق په لاندې ډول دي:
پروسیجر سورتریواکایکزروزوم ؛
پیل
د نچالني__index څخه konechii_index څخه د j لپاره یو لوپ؛
د نخالني_index څخه د کانچین_index-1 څخه زه د لوپ لپاره.
که چېرې ډله ییز [i] ډله ییز [i + 1] (لومړی عنصر د دویمې برخې څخه ډیر وي)، بیا:
(په ځایونو کې ارزښتونه بدل کړئ).
پای
البته، دلته سادگي یواځې وضعیت نور هم زیاتوي: ساده الګوریتم، نور هم دا ټول نیمګړتیاوې ښیي. د وخت مصرف کول د یوې وړې برخې لپاره هم خورا ښه دی (دلته د استحکام وړتیا راځي: د اوسط کس لپاره د وخت اندازه کوچنۍ ښکاري، مګر په پروګرام کونکي په هر ثانوي یا حتی په ملیونونوډونو کې).
دا غوره پلي کول. د بیلګې په توګه، په ځینو ځایونو کې د صفونو ارزښتونو تبادله ته په پام کې نیولو سره:
پروسیجر سورتریواکایکزروزوم ؛
پیل
ډول ډول = رښتیا؛
سایټ په داسې حال کې چې sortirovka = رښتینې؛
ډول ډوله = غلط
د نخالني_index څخه د کانچین_index-1 څخه زه د لوپ لپاره.
که چېرې ډله ییز [i] ډله ییز [i + 1] (لومړی عنصر د دویمې برخې څخه ډیر وي)، بیا:
(موږ عناصر په ځینو ځایونو کې بدلوو).
ډول ډول = رښتیا؛ (دا په ګوته کوي چې بدل بدل شوی دی).
پای.
د میتود زیان
اصلي زیان د پروسې موده ده. د بلبل ډول الګوریتم څومره وخت کار کوي ؟
د تطبیق وخت د ارقامو د شمیرو له مربع څخه حساب شوی - وروستی پایلې د متناسب وی.
د بدترین حالت سناریو سره، دغه سایټ به څو ځلې تیریږي ځکه چې په دې کې عناصر شتون لري، کمیته یو ارزښت. دا ځکه چې په پای کې یوازې یو عنصر شتون لري چې د پرتله کولو لپاره هیڅ شی نلري، او د تیرې لارې تیره بې کاره عمل کیږي.
سربيره پردې، د ساده تبادلو له لارې د ترتيب کولو طريقه، لکه څنګه چې هم ورته ويل کيږي، يوازې د کوچنيو اندازو د بندي کولو لپاره اغېزمن دي. د ډیرو اندازو ډاټا د دې په کارولو سره نشي پروسس کېدلی: نتیجه به یا دواړه غلطی وي، یا د پروګرام حادثه وي.
ګټې
یو بلبل ترتیب کول خورا پوه دي. د تخنیکي پوهنتونونو نصاب کې، کله چې د صف عناصرو ترتیب کول مطالعه کوي، دا لومړی ځل دی. دا میتود په اسانۍ سره د Delphi پروګرامونې دواړه ژبې (D) Delphi او C / C ++ (C / C plus plus))، په ناقانونه توګه د الګوریتمم په سمه ترتیب او د پیسالال (Pascal) لپاره د ارزښتونو د تنظیم لپاره دواړه تطبیق کیږي. د بلبل سره ترتیب کول د پیل لپاره غوره دي.
د نیمګړتیاوو له امله، د الوروریتم د غیر نصابي اهدافو لپاره کارول کیږي.
د ترتیب کولو یو روښانه اصل
د سر لومړنی لید 8 22 4 74 44 37 1 7 دی
مرحله 1 8 22 4 74 44 37 1 7
8 22 4 74 44 1 37 7
8 22 4 74 1 44 37 7
8 22 4 1 74 44 37 7
8 22 1 4 74 44 37 7
8 1 22 4 74 44 37 7
1 8 22 4 74 44 37 7
مرحله 2 1 8 22 4 74 44 7 37
1 8 22 4 74 7 44 37
1 8 22 4 7 74 44 37
1 8 22 4 7 74 44 37
1 8 4 22 7 74 44 37
1 4 8 22 7 74 44 37
مرحله 3 1 4 8 22 7 74 37 44
1 4 8 22 7 37 74 44
1 4 8 22 7 37 74 44
1 4 8 7 22 37 74 44
1 4 7 8 22 37 74 44
مرحله 4 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
مرحله 5 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
ګام 6 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
مرحله 7 1 4 7 8 22 37 44 74
په پوسک کې د بلبل لخوا ترتیب کول
بېلګه:
د kol_mas جوړښت = 10؛
Var Var massiv: سرلیک [array..mas] سرلیک؛
A، b، k: لنډیز؛
پیل کړئ
لیکلیک ('input'، kol_mas، 'array of elements')؛
د یو لپاره: = 1 کولمیم ته لوستل کیږي (massiv [a])؛
د یو لپاره: = 1 کولماس-1 پیل کوي
د b_ = = a + 1 لپاره کولی شي پیل کړي
که چېرې ډله ییز [a]> ډله ییز [ب] بیا پیل شي
K: = ډله ییز [a]؛ مسوی [a]: = ډله ییز [b]؛ مسع [b]: = k؛
پای
پای
پای
لیکلیک ('وروسته له هغې')
د یو لپاره: = 1 کولمیم ته لیکنه وکړئ (ډله ییز [a]؛
پای.
په C کې د بلبل لخوا ترتیب کول مثال (C)
بېلګه:
په شمول
په شمول
انټرنیټ اصلي (Int argc، char char * argv [])
{
Int massiv [8] = {36، 697، 73، 82، 68، 12، 183، 88}، i، ff؛
لپاره (؛؛) {
Ff = 0؛
د (i = 7؛ i> 0 - i -) لپاره {
که (massiv [i]
بیرغ (ډله ییز [i]، ډله ییز [i-1])؛
Ff ++؛
}
}
که (ff == 0) مات کړئ؛
}
ترلاسه کړئ () د سکرین ځنډ
راځئ 0
}.
Similar articles
Trending Now