מבוא לאלגוריתם מיון הבועות

מבוא לאלגוריתם מיון הבועות

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





במאמר זה תלמד על פעולתו של אלגוריתם מיון הבועות, הפסאודוקוד של האלגוריתם מיון בועות, מורכבות הזמן והחלל שלו והטמעתו בשפות תכנות שונות כמו C ++, Python, C ו- JavaScript.





כיצד פועל אלגוריתם מיון הבועות?

מיון בועות הוא אלגוריתם המיון הפשוט ביותר שעובר ברשימה שוב ושוב, משווה אלמנטים סמוכים ומחליף אותם אם הם בסדר הלא נכון. אפשר להסביר מושג זה בצורה יעילה יותר בעזרת דוגמא. שקול מערך לא ממוין עם האלמנטים הבאים: {16, 12, 15, 13, 19}.





דוגמא:

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



פסאודוקוד של אלגוריתם מיון הבועות

בפסאודוקוד ניתן לבטא את האלגוריתם מיון בועות כדלקמן:

bubbleSort(Arr[], size)
// loop to access each array element
for i=0 to size-1 do:
// loop to compare array elements
for j=0 to size-i-1 do:
// compare the adjacent elements
if Arr[j] > Arr[j+1] then
// swap them
swap(Arr[j], Arr[j+1])
end if
end for
end for
end

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





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

bubbleSort(Arr[], size)
// loop to access each array element
for i=0 to size-1 do:
// check if swapping occurs
swapped = false
// loop to compare array elements
for j=0 to size-i-1 do:
// compare the adjacent elements
if Arr[j] > Arr[j+1] then
// swap them
swap(Arr[j], Arr[j+1])
swapped = true
end if
end for
// if no elements were swapped that means the array is sorted now, then break the loop.
if(not swapped) then
break
end if
end for
end

מורכבות הזמן ומרחב העזר של אלגוריתם מיון הבועות

מורכבות הזמן הגרוע ביותר של אלגוריתם מיון הבועות היא O (n^2). הוא מתרחש כאשר המערך בסדר יורד ורוצים למיין אותו בסדר עולה או להיפך.





גודל אייפון 11 פרו מול אייפון 12 פרו

מורכבות הזמן הטוב ביותר באלגוריתם מיון הבועות היא O (n). זה קורה כאשר המערך כבר ממוין.

צור דיסק אתחול usb windows 7

קָשׁוּר: מהו סימון Big-O?

מורכבות זמן המקרים הממוצע של האלגוריתם למיון בועות היא O (n^2). הוא מתרחש כאשר רכיבי המערך נמצאים בסדר מעורבב.

שטח העזר הנדרש לאלגוריתם מיון הבועות הוא O (1).

C ++ יישום אלגוריתם מיון הבועות

להלן יישום C ++ של אלגוריתם מיון הבועות:

// C++ implementation of the
// optimised Bubble Sort algorithm
#include
using namespace std;
// Function to perform Bubble Sort
void bubbleSort(int arr[], int size) {
// Loop to access each element of the array
for (int i=0; i<(size-1); i++) {
// Variable to check if swapping occurs
bool swapped = false;
// loop to compare two adjacent elements of the array
for (int j = 0; j <(size-i-1); j++) {
// Comparing two adjacent array elements
if (arr[j] > arr[j + 1]) {
// Swap both elements if they're
// not in correct order
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true;
}
}
// If no elements were swapped that means the array is sorted now,
// then break the loop.
if (swapped == false) {
break;
}
}
}
// Prints the elements of the array
void printArray(int arr[], int size) {
for (int i = 0; i cout << arr[i] << ' ';
}
cout << endl;
}
int main() {
int arr[] = {16, 12, 15, 13, 19};
// Finding the length of the array
int size = sizeof(arr) / sizeof(arr[0]);
// Printing the given unsorted array
cout << 'Unsorted Array: ' << endl;
printArray(arr, size);
// Calling bubbleSort() function
bubbleSort(arr, size);
// Printing the sorted array
cout << 'Sorted Array in Ascending Order:' << endl;
printArray(arr, size);
return 0;
}

תְפוּקָה:

Unsorted Array:
16 12 15 13 19
Sorted Array in Ascending Order:
12 13 15 16 19

יישום פייתון של אלגוריתם מיון הבועות

להלן יישום Python של אלגוריתם מיון הבועות:

# Python implementation of the
# optimised Bubble Sort algorithm

# Function to perform Bubble Sort
def bubbleSort(arr, size):
# Loop to access each element of the list
for i in range (size-1):
# Variable to check if swapping occurs
swapped = False
# loop to compare two adjacent elements of the list
for j in range(size-i-1):
# Comparing two adjacent list elements
if arr[j] > arr[j+1]:
temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
swapped = True
# If no elements were swapped that means the list is sorted now,
# then break the loop.
if swapped == False:
break
# Prints the elements of the list
def printArray(arr):
for element in arr:
print(element, end=' ')
print('')

arr = [16, 12, 15, 13, 19]
# Finding the length of the list
size = len(arr)
# Printing the given unsorted list
print('Unsorted List:')
printArray(arr)
# Calling bubbleSort() function
bubbleSort(arr, size)
# Printing the sorted list
print('Sorted List in Ascending Order:')
printArray(arr)

תְפוּקָה:

Unsorted List:
16 12 15 13 19
Sorted List in Ascending Order:
12 13 15 16 19

קָשׁוּר: כיצד להשתמש עבור לולאות ב- Python

C יישום אלגוריתם מיון הבועות

להלן יישום C של אלגוריתם מיון הבועות:

// C implementation of the
// optimised Bubble Sort algorithm
#include
#include
// Function to perform Bubble Sort
void bubbleSort(int arr[], int size) {
// Loop to access each element of the array
for (int i=0; i<(size-1); i++) {
// Variable to check if swapping occurs
bool swapped = false;
// loop to compare two adjacent elements of the array
for (int j = 0; j <(size-i-1); j++) {
// Comparing two adjacent array elements
if (arr[j] > arr[j + 1]) {
// Swap both elements if they're
// not in correct order
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true;
}
}
// If no elements were swapped that means the array is sorted now,
// then break the loop.
if (swapped == false) {
break;
}
}
}
// Prints the elements of the array
void printArray(int arr[], int size) {
for (int i = 0; i printf('%d ', arr[i]);
}
printf(' ⁠n ');
}
int main() {
int arr[] = {16, 12, 15, 13, 19};
// Finding the length of the array
int size = sizeof(arr) / sizeof(arr[0]);
// Printing the given unsorted array
printf('Unsorted Array: ⁠n');
printArray(arr, size);
// Calling bubbleSort() function
bubbleSort(arr, size);
// Printing the sorted array
printf('Sorted Array in Ascending Order: ⁠n');
printArray(arr, size);
return 0;
}

תְפוּקָה:

Unsorted Array:
16 12 15 13 19
Sorted Array in Ascending Order:
12 13 15 16 19

יישום JavaScript של אלגוריתם מיון הבועות

להלן יישום JavaScript של אלגוריתם מיון הבועות:

// JavaScript implementation of the
// optimised Bubble Sort algorithm
// Function to perform Bubble Sort
function bubbleSort(arr, size) {
// Loop to access each element of the array
for(let i=0; i // Variable to check if swapping occurs
var swapped = false;
// loop to compare two adjacent elements of the array
for(let j=0; j // Comparing two adjacent array elements
if(arr[j] > arr[j+1]) {
// Swap both elements if they're
// not in correct order
let temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
swapped = true;
}
// If no elements were swapped that means the array is sorted now,
// then break the loop.
if (swapped == false) {
break;
}
}
}
}
// Prints the elements of the array
function printArray(arr, size) {
for (let i=0; i document.write(arr[i] + ' ');
}
document.write('
')
}

var arr = [16, 12, 15, 13, 19];
// Finding the length of the array
var size = arr.length;
// Printing the given unsorted array
document.write('Unsorted Array:
');
printArray(arr, size);
// Calling bubbleSort() function
bubbleSort(arr, size);
// Printing the sorted array
document.write('Sorted Array in Ascending Order:
');
printArray(arr, size);

תְפוּקָה:

Unsorted Array:
16 12 15 13 19
Sorted Array in Ascending Order:
12 15 13 16 19

כעת אתה מבין את פעולתו של אלגוריתם מיון הבועות

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

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

לַחֲלוֹק לַחֲלוֹק צִיוּץ אימייל כיצד להתחיל עם פייתון באמצעות סקריפט 'שלום עולם'

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

קרא הבא
נושאים קשורים
  • תִכנוּת
  • ג'אווה
  • פִּיתוֹן
  • הדרכות קידוד
על הסופר יובראג 'צ'נדרה(פורסמו 60 מאמרים)

יובראג 'הוא סטודנט לתואר ראשון במדעי המחשב באוניברסיטת דלהי, הודו. הוא נלהב מ- Full Stack Web Development. כשהוא לא כותב, הוא בוחן את עומק הטכנולוגיות השונות.

המקום הטוב ביותר לקנות חלקי מחשב משומשים
עוד מאת Yuvraj Chandra

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים, סקירות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

לחצו כאן להרשמה