logo

תוכנית מיון בועות ב-C

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

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

 void bubble_sort(int arr[], int n) { int i, j; for (i = 0; i <n - 1; i++) { for (j="0;" j <n i j++) if (arr[j]> arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } </n>

לפונקציה יש שתי לולאות. הלולאה החיצונית עוברת מהאלמנט הראשון לאלמנט השני אחרון של המערך. הלולאה הפנימית עוברת מהאלמנט הראשון לאלמנט השני-אחרון של החלק הלא ממוין של המערך. התנאי של הלולאה הפנימית הוא n - i - 1 מכיוון שרכיבי ה-i האחרונים של המערך כבר ממוינים.

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

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

תוכנית C:

 #include void bubble_sort(int arr[], int n) { int i, j; for (i = 0; i <n - 1; i++) { for (j="0;" j <n i j++) if (arr[j]> arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } int main() { int arr[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof(arr) / sizeof(arr[0]); bubble_sort(arr, n); printf(&apos;Sorted array: &apos;); for (int i = 0; i <n; i++) { printf('%d ', arr[i]); } return 0; < pre> <p>The main function creates an integer array arr of size 7 and initializes it with random numbers. We then calculate the size of the array by dividing the size of the array by the size of an integer element. Next, we call the bubble_sort function to sort the array. Finally, we print the sorted array using a for loop.</p> <p> <strong>When we run the program, we should see the following output:</strong> </p> <pre> Sorted array: 11 12 22 25 34 64 90 </pre> <p>This output shows that our bubble sort implementation correctly sorted the array in ascending order.</p> <p>To run the program, we need to compile it using a C compiler. Here is an example <strong>compilation command for GCC:</strong> </p> <pre> gcc -o bubble_sort bubble_sort.c </pre> <p>This command compiles the bubble_sort.c file and produces an executable file named bubble_sort.</p> <p>In summary, the bubble sort algorithm repeatedly swaps adjacent elements until the array is sorted. The algorithm has a time complexity of O(n<sup>2</sup>), which makes it inefficient for large data sets. However, it is useful for educational purposes and small data sets. We implemented the bubble sort algorithm in C programming language and tested it using a simple example.</p> <h3>Characteristics:</h3> <ul> <li>Bubble sort is a simple sorting algorithm.</li> <li>It works by repeatedly swapping adjacent elements if they are in the wrong order.</li> <li>The algorithm sorts the array in ascending or descending order.</li> <li>It has a time complexity of O(n<sup>2</sup>) in the worst case, where n is the size of the array.</li> </ul> <h3>Usage:</h3> <ul> <li>Bubble sort is useful for educational purposes and small data sets.</li> <li>It is not suitable for large data sets because of its time complexity.</li> </ul> <h3>Advantages:</h3> <ul> <li>Bubble sort is easy to understand and implement.</li> <li>It requires minimal additional memory space to perform the sorting.</li> </ul> <h3>Disadvantages:</h3> <ul> <li>It is not efficient for large data sets because of its time complexity.</li> <li>It has poor performance compared to other sorting algorithms, such as quicksort and mergesort.</li> </ul> <h2>Conclusion:</h2> <p>Bubble sort is a simple and intuitive sorting algorithm that is useful for educational purposes and small data sets. However, its time complexity makes it inefficient for large data sets. Therefore, it is not commonly used in real-world applications. Other sorting algorithms, such as quicksort and mergesort, are more efficient for large data sets.</p> <hr></n;></n>

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

כדי להפעיל את התוכנית, עלינו להרכיב אותה באמצעות מהדר C. הנה דוגמא פקודת קומפילציה עבור GCC:

 gcc -o bubble_sort bubble_sort.c 

פקודה זו מרכיבה את הקובץ bubble_sort.c ומייצרת קובץ הפעלה בשם bubble_sort.

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

מאפיינים:

  • מיון בועות הוא אלגוריתם מיון פשוט.
  • זה עובד על ידי החלפה חוזרת של אלמנטים סמוכים אם הם בסדר הלא נכון.
  • האלגוריתם ממיין את המערך בסדר עולה או יורד.
  • יש לו מורכבות זמן של O(n2) במקרה הגרוע, כאשר n הוא גודל המערך.

נוֹהָג:

  • מיון בועות שימושי למטרות חינוכיות ולמערכי נתונים קטנים.
  • זה לא מתאים למערכות נתונים גדולות בגלל מורכבות הזמן שלו.

יתרונות:

  • מיון בועות קל להבנה ויישום.
  • זה דורש שטח זיכרון מינימלי נוסף כדי לבצע את המיון.

חסרונות:

  • זה לא יעיל עבור מערכי נתונים גדולים בגלל מורכבות הזמן שלו.
  • יש לו ביצועים גרועים בהשוואה לאלגוריתמי מיון אחרים, כגון quicksort ו-mergesort.

סיכום:

מיון בועות הוא אלגוריתם מיון פשוט ואינטואיטיבי, שימושי למטרות חינוכיות ולמערכי נתונים קטנים. עם זאת, מורכבות הזמן שלו הופכת אותו ללא יעיל עבור מערכי נתונים גדולים. לכן, זה לא נפוץ ביישומים בעולם האמיתי. אלגוריתמי מיון אחרים, כגון quicksort ו-mergesort, יעילים יותר עבור מערכי נתונים גדולים.