عيون العرب - ملتقى العالم العربي

عيون العرب - ملتقى العالم العربي (https://www.3rbseyes.com/)
-   علم البرمجيات (https://www.3rbseyes.com/forum69/)
-   -   Bubble Sort Algorithm (https://www.3rbseyes.com/t583953.html)

DEMONOID-X 05-20-2019 01:33 PM

Bubble Sort Algorithm
 
https://4.top4top.net/p_1235dil6k1.jpg

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

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

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

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

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

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

https://6.top4top.net/p_1235d3z631.gif

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

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

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

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

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

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


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

======

https://1.top4top.net/p_1235oj0h72.gif

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

======

https://2.top4top.net/p_1235btxi13.gif

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

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



Linara 05-20-2019 06:50 PM

ممنوع وضع اكثر من موضوعين في اليوم :55:نجمه3

يغلق ل 24 ساعة#


الساعة الآن 02:41 AM.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

شات الشلة
Powered by: vBulletin Copyright ©2000 - 2006, Jelsoft Enterprises Ltd.
جميع الحقوق محفوظة لعيون العرب
2003 - 2011