مرتب سازی لانه کبوتری (Pigeonhole Sort) – به زبان ساده

۱۱۶۶
۱۴۰۳/۰۵/۶
۴ دقیقه
PDF
آموزش متنی جامع
امکان دانلود نسخه PDF

مرتب سازی لانه کبوتری (Pigeonhole Sort) یک الگوریتم مرتب سازی است. این الگوریتم برای مرتب‌سازی لیستی از عناصر مناسب است که در آن، عناصر لیست مقادیر عددی هستند. همچنین، اعداد ممکن برای مقادیر کلید نیز تقریبا مشابه هستند. الگوریتم مرتب سازی لانه کبوتری از درجه (O(n + Range است که در آن، n تعداد عناصر در آرایه ورودی و Range تعداد مقادیر ممکن در آرایه است. در این مطلب، الگوریتم مرتب سازی لانه کبوتری مورد بررسی قرار گرفته و پیاده‌سازی آن در زبان‌های برنامه‌نویسی گوناگون شامل ++C، «جاوا» (Java) و «پایتون» (Python) انجام شده است.

مرتب سازی لانه کبوتری (Pigeonhole Sort) – به زبان سادهمرتب سازی لانه کبوتری (Pigeonhole Sort) – به زبان ساده
997696

الگوریتم مرتب سازی لانه کبوتری

در ادامه، الگوریتم مرتب سازی لانه کبوتری ارائه شده است.

  • مقادیر کمینه (Minimum) و «بیشینه» (Maximum) را در آرایه را پیدا کن. مقادیر کمینه و بیشینه را به ترتیب min و max نام‌گذاری کن. همچنین، مقدار range را به صورت max-min-1 محاسبه کن.
  • آرایه‌ای با مقدار اولیه خالی «pigeonholes» هم‌سایز با range بساز.
  • هر عنصر آرایه را ملاقات کن و سپس، هر عنصر را در لانه کبوتری خودش قرار بده. عنصر [arr[i در لانه دارای اندیس arr[i] – min قرار می‌گیرد.
  • حلقه را به ترتیب در سراسر آرایه pigeonhole اجرا کن و عناصر لانه‌های خالی را در آرایه اصلی قرار بده.

مقایسه مرتب سازی لانه کبوتری و مرتب‌سازی شمارشی

مرتب سازی لانه کبوتری شبیه به «مرتب سازی شمارشی» (Counting Sort) است. تفاوت اصلی این دو الگوریتم مرتب‌سازی با یکدیگر در آن است که در مرتب سازی لانه کبوتری آیتم‌ها دو بار جا به جا می‌شوند؛ یک بار به آرایه سطل و بار دیگر به مقصد نهایی.

مرتب سازی لانه کبوتری (Pigeonhole Sort)

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

الگوریتم مرتب سازی لانه کبوتری در جاوا

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

الگوریتم مرتب سازی لانه کبوتری در #C

خروجی قطعه کدهای بالا به صورت زیر است.

Sorted order is : 2 3 4 6 7 8 8

به دلیل آنکه نیازمندی‌های مرتب سازی لانه کبوتری به ندرت تامین می‌شوند، استفاده از این الگوریتم بسیار محدود است.

برای آرایه‌هایی که range در آن‌ها بزرگ‌تر از n است، «مرتب‌سازی سطلی» (Bucket Sort) تعمیمی است که از جهت فضای مصرفی و زمان، کارایی بیشتری دارد.

اگر نوشته بالا برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

بر اساس رای ۱ نفر
آیا این مطلب برای شما مفید بود؟
اگر پرسشی درباره این مطلب دارید، آن را با ما مطرح کنید.
منابع:
GeeksforGeeks
PDF
مطالب مرتبط
۱ دیدگاه برای «مرتب سازی لانه کبوتری (Pigeonhole Sort) – به زبان ساده»

خیلی ممنون عالی بود

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *