مرتب‌سازی هرمی: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
جز اصلاح نوشتاری و پیوند using AWB (8062)
Rezabot (بحث | مشارکت‌ها)
جز ربات:اصلاح پیوندها
خط ۳:
در این مرتب سازی، ابتدا از کل آرایه داده شده یک [[درخت مکس هیپ]] (یا [[درخت مین هیپ]]) می‌سازد. سپس بزرگترین مقدار را بر می‌دارد و در انتهای آرایه مرتب شده قرار می‌دهد. بعد از حدف بزرگترین مقدار، دوباره از بقیه اعداد یک درخت مکس هییپ می‌سازد تا دومین عدد بزرگ یافت شود. بزرگ‌ترین مقدار در بین مقادیر باقی مانده را برمی دارد و آن را در مکان یکی قبل از انتهای آرایه قرار می‌دهد. این کار تا زمانی که هیچ مقداری در هرم باقی نماند و آرایه مرتب شده کامل شود، تکرار می‌شود.
 
[[تصویرپرونده:Sorting heapsort anim.gif|چپ|قاب]]
 
یکی از روش‌های مرتب‌سازی داده‌هااست,که براساس خصوصیات درخت heap پیاده‌سازی شده‌است.
خط ۱۰:
به عنوان مثال، min-heap زیر راتوضیح می‌دهیم:
 
[[تصویرپرونده:1.PNG|minheap|چپ|قاب]]
 
مراحل مرتب‌سازی هرمی به ترتیب زیر خواهد بود:
خط ۴۰:
درخت min-heap مثال فوق را در نظر بگیرید. با حذف عدد یک به عنوان گره ریشه درخت و اعمال تغییرات لازم به نتیجه زیر می‌رسیم:
 
[[Fileپرونده:11dheap.PNG]]
 
خط عمودی پررنگ، انتهای اطلاعات درخت در آرایه را نشان می‌دهد. خانه شماره 6 حاوی اطلاعات بلا استفاده‌است. پس می‌توانیم عنصر حذف شده را در آن قرار دهیم:
 
[[Fileپرونده:12dheap.PNG]]
 
توجه = در حال حاضر درخت از پنج عنصر تشکیل شده‌است و عنصر ششم آرایه از عناصر درخت نیست. به همین ترتیب با حذف مجدد گره ریشه با مقدار 4 آرایه زیر حاصل می‌شود:
 
[[Fileپرونده:12dheap.PNG]]
 
و با درج عنصر حذف شده در محل بلا استفاده:
 
[[Fileپرونده:13dheap.PNG]]
 
به همین ترتیب با تکرار الگوریتم نتیجه نهایی حاصل می‌شود:
 
[[Fileپرونده:14dheap.PNG]]
 
[[Fileپرونده:15dheap.PNG]]
 
[[Fileپرونده:16dheap.PNG]]
 
[[Fileپرونده:17dheap.PNG]]
 
باید توجه داشت که بر خلاف نتیجه نهایی روش قبل، در این حالت عناصر به صورت نزولی به دست آمده‌اند. یعنی در این روش از درخت min-heap برای مرتب‌سازی نزولی و از درخت max-heap برای مرتب‌سازی صعودی استفاده می‌شود.