الگوریتم مرتب سازی درجی (Insertion Sort)

تصویر insertion-sort-algorithm_7313 الگوریتم مرتب سازی درجی (Insertion Sort)

الگوریتم مرتب سازی درجی (Insertion Sort)

الگوریتم مرتب سازی درجی (Insertion Sort) یکی از الگوریتم های برای مرتب‌سازی یک آرایه نامرتب است. این الگوریتم برای مرتب‌سازی مجموعه های بزرگ کارایی خیلی کمتری در مقایسه با الگوریتم هایی مثل Merge Sort، Heap Sort و Quick Sort دارد. روش کار به این صورت است که عناصر آرایه را یکی یکی برداشته و در جای مناسب در بخش مرتب شده، قرار می دهد. در زیر می توانید تصویری از نحوه عملکرد الگوریتم Insertion Sort را مشاهه کنید.

تصویر insertion-sort-algorithm_7313_1 الگوریتم مرتب سازی درجی (Insertion Sort)

مثال

فرض کنید یک آرایه با مقادیر زیر داریم:

در این مثال i از 1 (یعنی عنصر دوم) تا 4 (یعنی عنصر آخر) ادامه می یابد.

i = 1، چون 12 از 11 بزرگتر است، 11 به قبل از 12 انتقال می یابد.

i = 2، 13 در جای خودش باقی می ماند. چون عناصر باقی مانده کوچکتر از آن هستند.

i = 3، مقدار 5 به ابتدای آرایه انتقال می یابد و مقادیر 11 و 13 یک واحد به جلو انتقال می یابند.

i = 4، مقدار 6 به موقعیت بعد از 5 انتقال می یابد و مقادیر 11 و 13 یک واحد به جلو انتقال می یابند.

پیاده سازی این الگوریتم با استفاده از زبان C++:

امتحان کنید

خروجی:

تغییر به حالت نزولی

برای تغییر به حالت نزولی کافیست در تابع insertionSort شرط while (j >= 0 && arr[j] > key) را به while (j >= 0 && arr[j] < key) تغییر دهید.

نکات

  • پیچیدگی زمانی برابر است با O(n*2).
  • فضای موقت برابر است با O(1).
  • این الگوریتم زمانی که آرایه به صورت برعکس مرتب شده باشد، بیشترین زمان را می گیرد و زمانی که به صورت مرتب شده باشد، کمترین زمان را می گیرد.
  • این الگوریتم برای مجموعه هایی که تعداد عناصر کمی دارند و همچنین مجموعه هایی که تقریبا مرتب شده هستند، کارایی خوبی دارد.
ثبت نظر
ریفریش کنید!
نظرات کاربران (۲ مورد)
  1. تصویر آواتار کاربر 0
    Ali پنجشنبه , 9 آبان

    سلام اعداد تصادفی تولید کند و زمان مرتب سازی را نشان دهد مثلا ۱۰۰هزاو عدد رو تصادفی تولید کند و بعد مرتب کند زمان رو به ما نشون بده