freeCodeCamp/guide/arabic/miscellaneous/freecodecamp-algorithm-bubb.../index.md

3.4 KiB
Raw Blame History

title localeTitle
Freecodecamp Algorithm Bubble Sort Guide دليل فرز خوارزمية Freecodecamp

تصنيف الفقاعة عبارة عن خوارزمية فرز بسيطة. خوارزمية الفرز هذه هي خوارزمية تستند إلى مقارنة يكون فيها كل زوج من العناصر المجاورة
مقارنة ويتم تبديل العناصر إذا لم تكن في النظام. تقوم هذه الخوارزمية بالفرز في المكان بمعنى أنه لا يقوم بإنشاء مصفوفة جديدة بينما
تنفيذ عملية الفرز.

مثال

الرسوم المتحركة من BubbleSort

`array = 5, 1, 4, 2, 8]

First Pass: ( 5 1 4 2 8 ) > ( 1 5 4 2 8 ), Here, algorithm compares the first two elements, and swaps since 5 > 1. ( 1 5 4 2 8 ) > ( 1 4 5 2 8 ), Swap since 5 > 4 ( 1 4 5 2 8 ) > ( 1 4 2 5 8 ), Swap since 5 > 2 ( 1 4 2 5 8 ) > ( 1 4 2 5 8 ), Now, since these elements are already in order (8 > 5), algorithm does not swap them.

Second Pass: ( 1 4 2 5 8 ) > ( 1 4 2 5 8 ) ( 1 4 2 5 8 ) > ( 1 2 4 5 8 ), Swap since 4 > 2 ( 1 2 4 5 8 ) > ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) > ( 1 2 4 5 8 ) Now, the array is already sorted, but our algorithm does not know if it is completed. The algorithm needs one whole pass without any swap to know it is sorted.

Third Pass: ( 1 2 4 5 8 ) > ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) > ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) > ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) > ( 1 2 4 5 8 ) `

تنفيذ C ++

`// Function to implement bubble sort void bubble_sort(int array[], int n) { // Here n is the number of elements in array int temp;

for(int i = 0; i < n-1; i++) 
{
// Last i elements are already in place
for(int j = 0; j < ni-1; j++)
{
if (array[j] > array[j+1])
{
// swap elements at index j and j+1
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
`

صاروخ: [تشغيل رمز Python التنفيذ

`def bubble_sort(arr): exchanges = True # A check to see if the array is already sorted so that no further steps gets executed i = len(arr)-1 while i > 0 and exchanges: exchanges = False for j in range(i): if arrj]>arr[j+1]: exchanges = True arr[j], arr[j+1] = arr[j+1], arr[j] i -= 1

arr = [5,3,23,1,43,2,54] bubble_sort(arr) print(arr) # Prints [1, 2, 3, 5, 23, 43, 54] `

:rocket: تشغيل الكود

تعقيد الخوارزمية

أسوأ ومتوسط ​​زمن التعقيد: O (n * n). حالة أسوأ تحدث عندما يتم فرز صفيف عكس أي أن العناصر في ترتيب تنازلي

أفضل تعقيد لحالة الوقت: O (n). تحدث حالة أفضل عندما يتم فرز الصفيف بالفعل.