מיון בחירה

מיון בחירה (באנגלית: selection sort) הוא אלגוריתם מיון השוואתי פשוט אך לא יעיל.
זמן הריצה הממוצע של האלגוריתם הוא פעולות (כמו, למשל, מיון בועות). מבחינת צריכת זיכרון האלגוריתם חסכוני, והוא דורש .
פרטי האלגוריתם
- מצא את האיבר בעל הערך הנמוך ביותר במערך
- החלף אותו עם האיבר הראשון במערך
- המשך באותה שיטה על שאר המערך (ללא האיבר הראשון)
זו כנראה הדרך האינטואיטיבית ביותר למיין, אך כאמור היא איננה יעילה במיוחד במונחים של זמן ריצה.
האלגוריתם כפי שניתן לכתוב אותו בשפת Java: <syntaxhighlight lang="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; } }
}
</syntaxhighlight>וכך ניתן לממש את האלגוריתם בשפת Python:<syntaxhighlight lang="python3"> def selection_sort(a):
for i in range(len(a)): mi = i for j in range(i + 1, len(a)): if a[j] < a[mi]: mi = j if i != mi: a[i], a[mi] = a[mi], a[i] return a
</syntaxhighlight>
ניתוח זמן הריצה
אפשר לראות שהלולאות יעברו על n-1 איברים בלי שום קשר לערכים במערך. לכן בהינתן מערך בגודל n, זמן הריצה של האלגוריתם הוא קבוע, כלומר אין מקרה טוב ומקרה רע. בכל מקרה לפי צעד 3, סורקים את שארית המערך n פעמים. זה מביא אותנו לסיבוכיות של .
קישורים חיצוניים
- String Module Error: Target string is empty.html מיון בחירה, באתר MathWorld (באנגלית) המזהה לא מולא ולא נמצא בוויקינתונים, נא למלא את הפרמטר.
אלגוריתמי מיון | ||
---|---|---|
רקע תאורטי | תורת הסיבוכיות • סימון אסימפטוטי • סדר מלא • רשימה • אלגוריתם תוך-מקומי • מיון יציב | |
אלגוריתמי מיון | אקראי • בועות • בחירה • בסיס • הכנסה • מהיר • מיזוג • מנייה • מסרק • סלים • ערימה • רשת מיון • שייקר • של | |
שונות | מיון טופולוגי • בעיית סידור הפנקייקים של גודמן |