See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
مرتب‌ساز گورزاد - ویکی‌پدیا

مرتب‌ساز گورزاد

از ویکی‌پدیا، دانشنامهٔ آزاد.

مرتب‌ساز گورزاد (به انگلیسی: Gnome sort) یکی از الگوریتم‌های مرتب‌سازی است که شبیه مرتب‌ساز درجی است، با این تفاوت که انتقال عنصر به موقعیت مناسبش، توسط تعدادی جابجایی صورت می‌گیرد؛ مثل مرتب‌ساز حبابی. کد این الگوریتم ساده است و نیازی به حلقه‌های تودرتو ندارد. زمان اجرای الگوریتم، (O(n² است، ولی در عمل با سرعت مرتب‌ساز درجی می‌تواند اجرا شود.

نام انگلیسی این مرتب‌ساز یعنی Gnome به معنی گورزاد است. گورزادها موجوداتی تخیلی هستند که آدمک‌های آن‌ها در باغچه‌های هلندیان قرار داده می‌شود و روش مرتب‌سازی گلدان، گِرد آن‌ها مشابهتی با این گونه مرتب‌سازی دارد.

[ویرایش] الگوریتم

شبه‌کد این الگوریتم را در زیر می‌بینید:

 function gnomeSort(a[0..size-1]) {
  i := 1
  j := 2
  while i < size
    if a[i-1] >= a[i]
        i := j
        j := j + 1 
    else
        swap a[i-1] and a[i]
        i := i - 1
        if i = 0
          i := 1
 }


و همین کد را به زبان پایتون در زیر می‌بینید:

 def gnomeSort(a) :
  i = 1
  j = 2
  while i < len(a) :
     if a[i - 1] >= a[i] :
        i = j
        j += 1
     else :
        a[i], a[i - 1] = a[i - 1], a[i]
        i-=1
        if i == 0 :
           i = 1


مثال: اگر بخواهیم آرایه [4, 2, 7, 3] را مرتب کنیم، در هر اجرای حلقه، مراحل زیر اتفاق می‌افتد: [4, 2, 7, 3] (حالت اولیه. i، یک و j، دو است.)
[4, 2, 7, 3] (تغییر نکرد ولی الان i، دو و j، سه است)
[4, 7, 2, 3] ([a[i-1 و [a[i، جابجا شدند. الان i، دو و j، سه است.)
[7, 4, 2, 3] ([a[i-1 و [a[i، جابجا شدند. هنوز هم i، یک و j، سه است.)
[7, 4, 2, 3] (اتفاقی نیفتاد ولی الان i، سه و j، چهار است.)
[7, 4, 3, 2] ([a[i-1 و [a[i تعویض شدند. الان i، چهار و j، پنج است.)
در اینجا، اجرای حلقه، خاتمه می‌یابد، زیرا i، کمتر از چهار نیست.

این الگوریتم همیشه اولین جایی که دو عنصر مجاور در ترتیب غلط هستند را پیدا می‌کند و جایشان را عوض می‌کند. این الگوریتم از این حقیقت بهره می‌برد که انجام یک جابجایی، فقط می‌تواند یک زوج مجاور جدید با ترتیب معکوس نسبت به قبل از انجام جابجایی، ایجاد می‌کند، و پس از انجام جابجایی، همین موقعیت را دوباره بررسی می‌کند.

[ویرایش] لینک به بیرون



aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -