مرتب‌سازی انتخابی - selection sort

در مرتب‌سازی انتخابی هر بار بزرگترین (کوچکترین) عنصر قسمت مرتب نشده را پیدا می‌کنیم و جای آن را با آخرین عنصر قسمت مرتب نشده عوض می‌کنیم.

  1. آخرین عنصر قسمت مرتب نشده را به عنوان بزرگترین (کوچکترین) عنصر در نظر بگیر.
  2. هر عنصر قبل از این عنصر را به ترتیب بررسی کن و در صورتی که از عدد در نظر گرفته شده بزرگ‌تر (کوچک‌تر) بود آن را به عنوان بزرگ‌ترین (کوچک‌ترین) عنصر در نظر بگیر. این مرحله را تا رسیدن به یکی مانده به آخرین عنصر قسمت مرتب نشده (همان عنصری که در مرحله‌ی ۱ انتخاب شد) تکرار کن.
  3. بزرگ‌ترین (کوچک‌ترین) عنصری که در مرحله‌ی ۲ پیدا کرده‌اید را با آخرین عنصر قسمت مرتب نشده تعویض کنید. الان بزرگترین (کوچکترین) عنصر قسمت مرتب نشده به درستی در جای خود قرار گرفته است. پس اگر فرض کنیم که آرایه‌ی نامرتب ما در ابتدا n عضو داشته باشد در حال حاضر قسمت نامرتب آرایه‌ی ما n-1 عضو خواهد داشت.
  4. اگر هنوز در قسمت مرتب نشده بیشتر از یک عنصر باقی مانده است به مرحله‌ی ۱ برو.

قطعه کد زیر الگوریتم مرتب‌سازی انتخابی را به شیوه‌ی صعودی نشان می‌دهد:

// .........
for (i = n-1; i > 0; i--) {
    max_index = i;                          // suppose that number existed
                                            // in numbers[i] is maximum

    for (j = 0; j < i; j++)
        if (numbers[j] > numbers[max_index])
            max_index = j;

    if (max_index != i)
        swap(numbers, i, max_index);
}
// ..........

پیاده‌سازی الگوریتم selection sort به صورت صعودی

پیاده‌سازی الگوریتم selection sort به صورت نزولی

پیاده سازی الگوریتم selection sort به صورت صعودی با پاسکال

© کلیه‌ی حقوق برای safarionline.ir محفوظ است.