الگوریتمستان
برنامهنویسی، طراحی الگوریتم و حل مسئلههای الگوریتمی
مرتبسازی هرمی (Heap Sort) یکی از روشهای مشهور مرتبسازی دادهها است که بر اساس خصوصیات درخت heap (هیپ، هرم یا کپه) و عملکرد آن پیادهسازی شده است.
بر اساس تعریف درخت heap، در یک max-heap (یا min-heap) بزرگترین (یا کوچکترین) مقدار بین دادهها همواره در ریشهی درخت قرار دارد. یافتن بزرگترین (یا کوچکترین) عنصر بین عناصر، هزینهی ثابت ( Ө( 1 دارد. با حذف این عنصر از درخت، بزرگترین (یا کوچکترین) عنصر بعدی مجددا در ریشه قرار میگیرد. به این ترتیب با حذف متوالی عناصر درخت heap و درج آنها در محل جدید، یک آرایهی مرتبشدهی نزولی (یا صعودی) به دست خواهد آمد.
روش مرتبسازی ادغامی (Merge Sort) یک روش مرتبسازی مبتنی بر مقایسهی عناصر با استفاده از روش تقسیم و غلبه است. این روش از مراحل بازگشتی زیر تشکیل یافته است:
1- آرایه را به دو زیرآرایه با اندازهی تقریبا یکسان تقسیم کن.
2- دو زیرآرایه را به روش مرتبسازی ادغامی مرتب کن.
3- دو زیرآرایهی مرتبشده را ادغام کن.
روش مرتبسازی سریع (Quick Sort) یکی از الگوریتمهای مشهور مرتبسازی دادهها است. این الگوریتم طی مراحل بازگشتی زیر یک روش تقسیم و غلبه برای مرتب کردن دادهها ارائه مینماید:
1- انتخاب عنصر محوری: یکی از عناصر آرایه به عنوان عنصر محوری (pivot) - به عنوان مثال عنصر اول - انتخاب میشود.
2- تقسیم آرایه: چینش عناصر آرایه به قسمی تغییر داده میشود که تمامی عناصر کوچکتر یا مساوی محور در سمت چپ آن و تمامی عناصر بزرگتر در سمت راست آن قرار بگیرند. این دو قسمت زیر آرایههای چپ و راست نامیده میشوند.
روش مرتبسازی درجی (Insertion Sort) یکی از روشهای مقدماتی مرتبسازی مبتنی بر مقایسهی عناصر است که در مقایسه با روشهای دیگر بیشتر مورد توجه قرار دارد.
قفسهی کتابی را در نظر بگیرید که قصد دارید کتابها را بر اساس عنوان و به ترتیب حروف الفبا مرتب کنید. از یک سمت قفسه شروع به مرتب کردن میکنید. ابتدا کتاب دوم را با کتاب اول مقایسه کرده و در صورت لزوم جابجا میکنید. سپس کتاب سوم را از محل خود برداشته و در مقایسه با دو کتاب قبلی در محل مناسب قرار میدهید. به همین ترتیب کتابهای بعدی را نیز نسبت به کتابهای مرتبشدهی قبلی در محل مناسب درج میکنید تا به آخر قفسه برسید.
روش مرتبسازی انتخابی (Selection Sort) یکی از روشهای اولیهی مرتبسازی بر اساس مقایسهی عناصر است. این الگوریتم طی چند مرحله عناصر لیست را به صورت صعودی یا نزولی مرتب میکند. به این ترتیب که در هر مرحله با بررسی عناصر نامرتب، بزرگترین (یا کوچکترین) عنصر را پیدا کرده و به انتهای لیست منتقل میکند.
لیست اعداد زیر را در نظر بگیرید که باید به صورت صعودی (کوچک به بزرگ) مرتب شود:
2 8 4 1 7
یکی از روشهای مرتبسازی، روش مرتبسازی حبابی (Bubble Sort) است که به آن روش تعویض استاندارد (Standard Exchange) نیز میگویند. این روش شامل چند مرحله است که در هر مرحله یک عنصر از لیست به طور قطع در محل مناسب خود قرار میگیرد.
لیست زیر را در نظر بگیرید که میخواهیم به صورت صعودی (از کوچک به بزرگ) مرتب کنیم:
4 3 8 1 6 2