الموضوع: Bubble Sort Algorithm
عرض مشاركة واحدة
  #1  
قديم 05-20-2019, 01:33 PM
 
Exclamation Bubble Sort Algorithm



نتابع فى هذا الموضوع خوارزمية Bubble Sort Algorithm و هى احدى اشهر خوازميات الترتيب Sorting .

هدف هذه الخوارزمية هو ترتيب عناصر مصفوفة اما ترتيب تصاعدى او تنازلى.

انها من ابسط الخوارزميات و هى من خوارزميات المقارنة.

فكرة هذه الخوارزمية هى :

ملحوظة: يجب تحديد ان كنت تريد الترتيب تصاعدى ام تنازلى.

المصفوفة قبل الترتيب:



افتراضيا فى حلنا سيكون تصاعدى.

1- نمر على عناصر المصفوفة جميعا

2- عندما نجد عنصر اصغر من العنصر الذى يسبقه(قبله) نقوم بتبديلهما.

3- نمر هكذا على جميع عناصر المصفوفة حتى ننهى الدورة الاولى.

4- نعيد المرور على عناصر المصفوفة مرة اخرى و نرى ان كان هناك احد العناصر اصغر مما يسبقه و نبدلهما حتى ننهى هذه الدورة.

5- نعيدها مرارا و تكرارا حتى ننتهى تماما من ترتيبها.


الدورة الاولى

======



الدورة الثانية

======



=========================================

كود دالة الترتيب bubblesort

Code 1:
كود:
//bubblesort functionvoid 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[i] << " ";    }    cout << endl;}
شرح الكود:
السطر 3: تعريف الدالة

function parameters: array, SIZE of array

السطر 5 --< 8 : انشاء حلقة loop لطباعة جميع عناصر المصفوفة

============================

كود دالة التبديل swap Code 3:=cpp>=cpp>
كود:
//swap functionvoid 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 prototypevoid print(int[], int); //function prototypevoid swap(int&, int&); //function prototype//main functionint 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>

bubble_sort.rar


رد مع اقتباس