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

  • یکشنبه ۱۹ آبان ۱۳۹۸
  • بازدید ۴,۴۸۵ نفر

تصویر counting-sort-algorithm_7343 الگوریتم مرتب سازی شمارشی (Counting Sort)

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

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

 برای درک بهتر به مثال زیر توجه کنید:

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

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

امتحان کنید

خروجی کد فوق:

نکات

  • پیچیدگی زمانی الگوریتم برابر است با O(n+k) که در آن n تعداد عناصر آرایه ورودی و k رنج ورودی است.
  • پیچیدگی فضایی برابر است با O(n+k).

مشکلی که پیاده سازی بالا دارد این است که اگر آرایه ورودی شامل مقادیر منفی باشد، نمی توانیم آن را مرتب کنیم. چون هیچ اندیسی برای اعداد منفی وجود ندارد. برای حل این مشکل می توانید آن را به شکل زیر پیاده سازی کنید.

امتحان کنید

خروجی:

ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است