الگوریتم مرتب سازی شل (Shell Sort)

  • دوشنبه ۲۷ آبان ۱۳۹۸
  • بازدید ۳,۱۶۷ نفر

تصویر shell-sort-algorithm_7348 الگوریتم مرتب سازی شل (Shell Sort)

الگوریتم مرتب سازی شل (Shell Sort)

الگوریتم مرتب سازی شل (Shell Sort) نسخه تغییر یافته الگوریتم مرتب سازی درجی (Insertion Sort) است. در مرتب سازی درجی ما عناصر را فقط یک خانه به جلو حرکت دهیم. همین موضوع باعث می شود تا برای انتقال یک عنصر به موقعیت خیلی جلوتر، تعداد حرکات افزایش یابد. در الگوریتم مرتب سازی شل امکان مبادله عناصر دور هم فراهم شده است.

الگوریتم مرتب سازی شل برای رفع ایرادات زیر که در مرتب سازی درجی وجود دارد، ایجاد شده است:

  • کارایی مرتب سازی درجی زمانی خوب است که آرایه تقریبا مرتب باشد.
  • بازده کمی دارد، چون در هر زمان فقط به اندازه یک موقعیت مقادیر را جا به جا می می کند.

تصویر shell-sort-algorithm_7348_1 الگوریتم مرتب سازی شل (Shell Sort)

پیاده سازی الگوریتم Shell Sort

در زیر می توانید نحوه پیاده سازی الگوریتم Shell Sort با استفاده از زبان برنامه نویسی سی پلاس پلاس را مشاهده کنید:

امتحان کنید

خروجی:

نکات

  • پیچیدگی زمانی در بهترین حالت برابر است با O(n log2n).
  • پیچیدگی زمانی در حالت متوسط برابر است با O(n2).
  • پیچیدگی زمانی در بدترین حالت برابر است با O(n log2).
  • پیچیدگی فضایی برابر است با O(1).
ثبت نظر
ریفریش کنید!
نظرات کاربران (۱ مورد)
  1. تصویر آواتار کاربر 0
    صادق جمعه , 21 مرداد

    سلام، خیلی عالی، ممنون بابت زحمتتون، فقط راجع به پیچیدگی زمانی فک کنم ایرادایی وجود داره، مثلا بهترین حالت o(n) هستش فک کنم. خط for (int i = gap; i < n; i += 1) هم باید به صورت زیر اصلاح بشه: for (int i = gap; i < n; i += gap)