מיון בחירה

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
מיון בחירה

מיון בחירה (selection sort בלעז) הוא אלגוריתם מיון השוואתי פשוט אך לא יעיל.

זמן הריצה הממוצע של האלגוריתם הוא \Theta\left(n^2\right) פעולות (כמו, למשל, מיון בועות). מבחינת צריכת זיכרון האלגוריתם חסכוני, והוא דורש \Theta\left(1\right).

פרטי האלגוריתם[עריכת קוד מקור | עריכה]

  1. מצא את האיבר בעל הערך הנמוך ביותר במערך
  2. החלף אותו עם האיבר הראשון במערך
  3. המשך באותה שיטה על שאר המערך (ללא האיבר הראשון)

זו כנראה הדרך האינטואיטיבית ביותר למיין, אך כאמור היא איננה יעילה במיוחד במונחים של זמן ריצה.

האלגוריתם כפי שניתן לכתוב אותו בשפת Java:

void selectionSort(int[] a) {
    for (int i = 0; i < a.length - 1; i++) {
        int min = i;
        for (int j = i + 1; j < a.length; j++) {
            if (a[j] < a[min]) {
                min = j;
            }
        }
        if (i != min) {
            int swap = a[i];
            a[i] = a[min];
            a[min] = swap;
        }
    }
}

ניתוח זמן הריצה[עריכת קוד מקור | עריכה]

אפשר לראות שהלולאות יעברו על n-1 איברים בלי שום קשר לערכים במערך. לכן בהינתן מערך בגודל n, זמן הריצה של האלגוריתם הוא קבוע, כלומר אין מקרה טוב ומקרה רע. בכל מקרה לפי צעד 3, סורקים את שארית המערך n פעמים. זה מביא אותנו לסיבוכיות של \Theta\left(n^2\right).