Bubble Sort Algorithm
=====================
السلام عليكم و رحمة الله و بركاته
كيف حالكم اخوتى ,,, اتمنى ان تكونوا بخير ان شاء الله
رابط الموضوع الاول Linear Search Algorithm
نتابع فى هذا الموضوع خوارزمية Bubble Sort Algorithm و هى احدى اشهر خوازميات الترتيب Sorting .
هدف هذه الخوارزمية هو ترتيب عناصر مصفوفة اما ترتيب تصاعدى او تنازلى.
انها من ابسط الخوارزميات و هى من خوارزميات المقارنة.
فكرة هذه الخوارزمية هى :
ملحوظة: يجب تحديد ان كنت تريد الترتيب تصاعدى ام تنازلى.
المصفوفة قبل الترتيب:![]()
افتراضيا فى حلنا سيكون تصاعدى.
1- نمر على عناصر المصفوفة جميعا
2- عندما نجد عنصر اصغر من العنصر الذى يسبقه(قبله) نقوم بتبديلهما.
3- نمر هكذا على جميع عناصر المصفوفة حتى ننهى الدورة الاولى.
4- نعيد المرور على عناصر المصفوفة مرة اخرى و نرى ان كان هناك احد العناصر اصغر مما يسبقه و نبدلهما حتى ننهى هذه الدورة.
5- نعيدها مرارا و تكرارا حتى ننتهى تماما من ترتيبها.
الدورة الاولى
======
الدورة الثانية
======
=========================================
كود دالة الترتيب bubblesort
Code 1:
//bubblesort function
void bubblesort(int a[], const int SIZE)
{
for (int pass=1; pass < SIZE; pass++) //loop to specify number of passes
{
for (int j=0; j < SIZE-1; j++) //shorter loop to check elements of array
{
if (a[j] > a[j+1]) //if element > following element then
swap(a[j],a[j+1]); //swap them
}
}
}شرح الكود:
السطر 3: بداية الدالة
function arguments: array, SIZE of array
السطر 4: حلقة loop لتحديد عدد الدورات التى سوف نمر بها على المصفوفة
السطر 7: حلقة loop اقصر للمرور على جميع عناصر المصفوفة و مقارنتها ببعضها
السطر 9-10 : جملة If شرطية تحدد اذا كان عنصر اكبر مما يليه يتم تبديلهما بالدالة swap
============================================
كود دالة طباعة النتائج print
Code 2:
//print functionvoid print(int a[],const int SIZE){ for (int i = 0; i < SIZE; i++) //loop for passing over all array elements and { //printing them cout << a << " "; } cout << endl;}شرح الكود:
السطر 3: تعريف الدالة
function parameters: array, SIZE of array
السطر 5 --< 8 : انشاء حلقة loop لطباعة جميع عناصر المصفوفة
============================
كود دالة التبديل swap Code 3:=cpp>=cpp>
//swap function
void swap(int& x, int& y)
{
int temp;
temp = x;
x = y;
y = temp;
}شرح الكود:
السطر 3: تعريف الدالة
function parameters: x,y passed by reference coz we want to change their valus
لقد قمنا بتمرير x,y بـــ reference المرجع لأننا نريد تغيير قيمهما
السطر5--<8 : تعريف المتغير temp الذى يستخدم فى تبديل قيم x,y
=======================
اخيرا كود دالتنا الرئيسية main Code 4:=cpp>=cpp>=cpp>
#include<iostream>
using namespace std;
void bubblesort(int[], int); //function prototype
void print(int[], int); //function prototype
void swap(int&, int&); //function prototype
//main function
int main()
{
const int SIZE = 10;
[color= #include<iostream>
using namespace std;
void bubblesort(int[], int); //function prototype
void print(int[], int); //function prototype
void swap(int&, int&); //function prototype
//main function
int main()
{
const int SIZE = 10; //constant for sizing array
int a[SIZE]= {10,7,18,15,9,4,13,11,21,3}; //defining array and its elements
cout << "Before BubbleSorting: [color= #A31515; font-weight: bold;]n";
print(a,SIZE); //printing array elements before sorting
bubblesort(a,SIZE); //sorting elements of the array
cout << "After BubbleSorting: [color= #A31515; font-weight: bold;]n";
print(a, SIZE); //printing elements after sorting
system("pause");
return 0;
}شرح الكود:
السطر 4 --< 6: تعريف functions prototypes ليستخدمها المترجم فى التعرف على الدوال
السطر 11: تعريف ثابت لتحديد حجم المصفوفة
السطر 12: تعريف المصفوفة و ملئها ببعض البيانات
السطر 13 - 14: طباعة عناصر المصفوفة قبل الترتيب
السطر 15: تطبيق دالة الترتيب على عناصر المصفوفة
السطر 16-17: عرض عناصر المصفوفة بعد الترتيب
================================
الى هنا انتهى شرح الخوارزمية و تطبيقها بــكود معشوقتنا ++C
اى مشكلة او تعليق على الكود يرجى اضافتها و مناقشتها مع بقية الاعضاء
ارجو ان يكون وفقنى الله تعالى فى هذا الشرح البسيط للخورازمية
ملاحظة: الكود مرفق كاملا لمن يجد مشكلة فى الكود المكتوب فى الموضوع
وفقكم الله=cpp>=cpp>=cpp>