PDA

צפייה בגרסה מלאה : מדריך אלגוריתם Bubble sort בשפת C



Tamir
06-09-2024, 11:33 PM
אלגוריתם מיון בועות (Bubble Sort) בשפת C


אלגוריתם מיון בועות (Bubble Sort) הוא אלגוריתם פשוט למיון מערכים. הוא פועל על עקרון של השוואה בין זוגות סמוכים של אלמנטים במערך ומעביר את האלמנטים הגדולים יותר לעבר הסוף של המערך בעזרת חילופים. התהליך חוזר על עצמו עד שהמערך ממויין לחלוטין.


מימוש אלגוריתם Bubble Sort:


הנה דוגמה לקוד המיישמת את אלגוריתם Bubble Sort בשפת C:



c
#include <stdio.h>


// פונקציה למיון מערך בעזרת אלגוריתם Bubble Sort
void bubbleSort(int arr[], int n) {
int i, j;
int temp;


// מעבר על כל אלמנט במערך
for (i = 0; i < n - 1; i++) {
// השוואה בין זוגות סמוכים
for (j = 0; j < n - i - 1; j++) {
// החלפת מקום בין אלמנטים במידה והאלמנט הנוכחי גדול מהאלמנט הבא
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}


// פונקציה להדפסת מערך
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}


int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr) / sizeof(arr[0]);


printf("Array before sorting:\n");
printArray(arr, n);


bubbleSort(arr, n);


printf("Array after sorting:\n");
printArray(arr, n);


return 0;
}



הסבר על הקוד:


1. **פונקציה `bubbleSort`**:
- הפונקציה מקבלת מערך `arr` ואורכו `n`.
- הלולאה הראשונה (`for (i = 0; i < n - 1; i++)`) עוסקת במעבר על כל האלמנטים במערך.
- הלולאה השנייה (`for (j = 0; j < n - i - 1; j++)`) מבצעת השוואה בין זוגות סמוכים של אלמנטים ומבצעת חילופים במידת הצורך.
- אם האלמנט הנוכחי גדול מהאלמנט הבא, הם מחליפים מקומות באמצעות משתנה זמני `temp`.


2. **פונקציה `printArray`**:
- הפונקציה מקבלת מערך ואורכו ומדפיסה את כל האלמנטים שלו.


3. **פונקציה `main`**:
- יוצרת מערך לדוגמה ומדפיסה אותו לפני ואחרי המיון.


סיכום:


אלגוריתם Bubble Sort הוא אלגוריתם פשוט וקל להבנה למיון מערכים. אף על פי שהוא לא תמיד היעיל ביותר, הוא יכול לשמש כנקודת התחלה טובה להבנת עקרונות של מיון. במדריך זה ראינו כיצד ליישם את אלגוריתם Bubble Sort בשפת C ולמיין מערכים בצורה בסיסית.


אם יש לכם שאלות נוספות או אתם זקוקים לעזרה נוספת, אתם מוזמנים לשאול!