الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Bubble Sort Algorithm

بدأه Omar Eladel في 17 أغسطس 2008 · 0 رد · 17,516 مشاهدة · في المواضيع والدروس
مشاركة: واتساب X فيسبوك تيليجرام
#1

Bubble Sort Algorithm

 

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

 

السلام عليكم و رحمة الله و بركاته

كيف حالكم اخوتى ,,, اتمنى ان تكونوا بخير ان شاء الله

رابط الموضوع الاول Linear Search Algorithm



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

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

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

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

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

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

post-132119-1218926355_thumb.gif


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

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

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

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

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

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

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

======

post-132119-1218926363_thumb.gif

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

======

post-132119-1218926370_thumb.gif

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

كود دالة الترتيب 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>

bubble_sort.rar

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 7 فبراير 2014 في 22:54 — السبب: إنقاذ الأكواد

3

مواضيع مشابهة