פעולת swap – החלפה

כל שיטות המיון משתמשות בהחלפה בין שני איברים:

public static void swap(int[] arr, int i, int j) {
    int temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
}

מיון בחירה (Selection Sort)

רעיון: בכל סיבוב, מוצאים את האיבר הקטן ביותר מהחלק הלא-ממוין ומחליפים אותו עם האיבר הראשון בחלק הלא-ממוין.

שלבים עבור {64, 25, 12, 22, 11}:

שלבמערךפעולה
011 25 12 22 64מינימום 11, החלפה עם 64
111 12 25 22 64מינימום 12, החלפה עם 25
211 12 22 25 64מינימום 22, החלפה עם 25
311 12 22 25 64מינימום 25, כבר במקום
public static void selectionSort(int[] arr) {
    for (int i = 0; i < arr.length - 1; i++) {
        int minIndex = i;
        for (int j = i + 1; j < arr.length; j++) {
            if (arr[j] < arr[minIndex])
                minIndex = j;
        }
        swap(arr, i, minIndex);
    }
}

מיון בועות (Bubble Sort)

רעיון: עוברים שוב ושוב על המערך, משווים זוגות שכנים ומחליפים אם הם בסדר לא נכון. האיברים הגדולים "צפים" למעלה כמו בועות.

public static void bubbleSort(int[] arr) {
    for (int i = 0; i < arr.length - 1; i++) {
        for (int j = 0; j < arr.length - 1 - i; j++) {
            if (arr[j] > arr[j + 1])
                swap(arr, j, j + 1);
        }
    }
}

שיפור – עצירה מוקדמת

אם בסיבוב שלם לא בוצעה אף החלפה, המערך כבר ממוין:

public static void bubbleSortOptimized(int[] arr) {
    for (int i = 0; i < arr.length - 1; i++) {
        boolean swapped = false;
        for (int j = 0; j < arr.length - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                swap(arr, j, j + 1);
                swapped = true;
            }
        }
        if (!swapped) break;
    }
}

מיון הכנסה (Insertion Sort)

רעיון: כמו סידור קלפים ביד – לוקחים כל איבר ומכניסים אותו למקום הנכון בחלק הממוין (שמשמאל).

public static void insertionSort(int[] arr) {
    for (int i = 1; i < arr.length; i++) {
        int key = arr[i];
        int j = i - 1;
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = key;
    }
}

השוואה – טבלת סיכום

שיטהמקרה גרועמקרה טוביציבותרעיון
מיון בחירהO(n²)O(n²)לא יציבמצא מינימום והחלף
מיון בועותO(n²)O(n)*יציבהחלף שכנים
מיון הכנסהO(n²)O(n)יציבהכנס למקום הנכון

*מיון בועות O(n) במקרה טוב רק עם השיפור (עצירה מוקדמת).

יציבות – מיון יציב שומר על הסדר היחסי של איברים שווים.

שאלות נפוצות

למה כל השיטות O(n²)?

כי בכולן יש לולאה כפולה – לולאה חיצונית שרצה n פעמים ולולאה פנימית שרצה עד n פעמים. סה"כ סדר גודל של n² השוואות.

איזה מיון כדאי להשתמש?

בבגרות – צריך לדעת את שלושתם. בפועל, אם המערך כמעט ממוין – מיון הכנסה הכי מהיר. למערכים גדולים משתמשים במיונים מתקדמים יותר (Merge Sort, Quick Sort).

מה זה מיון יורד?

פשוט הופכים את כיוון ההשוואה: במקום < כותבים > (או להיפך). למשל, במיון בחירה מחפשים מקסימום במקום מינימום.

צריכים עזרה באלגוריתמים?

מורים פרטיים ילמדו אתכם מיון, חיפוש ואלגוריתמיקה.

מצאו מורה פרטי