الخميس، 26 مارس 2015

تصنيف الفقاعات Sorting Bubble :

تصنيف الفقاعات Sorting Bubble :
تعتبـر هـذه الطريقــة هــي طريقــة فـرز وتصـنيف ، وقـد تتسـاءل عــن فائــدة
التصنيف أو الفرز والـذي يعــني ترتيـب البيانـات وفـق ترتيـب معــين ، الفائـدة
الكبـرى هــو تسـهيل عــملية البحـث علـى الحاسـب وبالتـالي القـدرة علـى
التعامل مع كثير من البيانات بكفاءة كما أن هذا يمهـد لاعتمـاد طريقــة البحـث
الثنائي والتي هـي أفضـل وأسـرع بكثيـر مـن طريقــة البحـث المتسلسـل أو
المتتــالي ، ســنتعرض فــي هــذه الفقــرة علــى إحــدى الخوارزميــات وهـــي
خـوارزمية تصنيف الفقاعات، هـذا أحـد الامثلـة التـي حصـلت عليهـا مـن أحـد
الكتب1 يبين لك كيف تنظيم المعلومات بواسطـة تصنيف الفقاعات:
عـناصر المصفوفة التي نـود ترتيبها أو فرزها
50
32
93
2
74
الخطوة الاولى يقارن البرنامج بين العـنصر الاول والثاني. ولأن 32
هـي أصغر من 50 فإنه يبادل بين أمكنتهـم
32
50
93
2
74
من ضمن الخطوة الاولى يقارن البرنامج بين العنصر الأول والثالث ولأن 32
أصغر من 93 فلا يفعل شيء، الآن سيقارن بين العـنصر الاول والعـنصر الرابع
وسيبادل بين أماكنهم
2
50
93
32
74
من ضمن الخطوة الأولى أيضاً يقارن البرنامج بين العـنصر الأول والعـنصر الأخير 2 و 74 ولن
يقوم بأي حركـة وبالتالي تنتهي الخطوة الأولى
الخطوة الثانية يقارن فيها البرنامج العـنصر الثاني ببقية العناصر، وسيقارن الآن بين العـنصر
50 و93 وسيتركهـم وسيقوم بعد ذلك بتبديل مكان العنصر
الثاني بالعنصر الثالث وسيبدل أماكنهـم
2
32
93
50
74
من ضمن الخطوة الثانية يقارن البرنامج بين بين العـنصر الثاني 32 والأخير74 ولن يقوم
بتحريكهـم وبالتالي نتتهي الخطوة الثانية
الخطوة الثالثة يقارن فيها البرنامج العنصر الثالث ببقية العناصر ، وسيقارن أولا الرقم 93
بالرقم 50 وسيقوم بتحريك القيمتين وتبديل أماكنهـم
2
32
50
93
74
من ضمن الخطوة الثالثة يقارن البرنامج القيمة 50 بالقيمة 74 ولن يقوم بتبديل الأماكن.
ينتقل البرنامج إلى الخطوة الرابعـة وهـي آخر خطوة وفيها سيقارن العنصر الرابع بالعـنصر
الأخير ولن يقوم بتبديل الأماكن وهـكذا يصبح شكل المصفوفة
مرتباً
الآن سنقوم بجعـل هـذه الخوارزميـة إلـى كــود وأول مـا نــود القيـام بـه هــو
معرفة كم حلقة تكرارية نقوم بها والجواب هـو حلقتين اثنتين ، فكما ترى فإن
البرنامج يتحرك حول العـناصر وهذه الحلقـة الأولـى ثـم يقـارن هـذه العــناصر
1
اسم الكتاب هـو Languge C للمؤلف جريج بيري (المثال مترجم من قبلي)
بالعـناصر التي تليها وهذه هـي الحلقـة الثانيـة ، الآن علينـا معرفـة كـم عــدد
المـرات التـي تتحركهـا الحلقـات والجـواب بسـيط فـي الحلقـة الأولـى تحـرك
البرنامج في مثالنا السابق أربع خطـوات أي أن الحلقـة الأولـى تتحـرك (عـدد
عــناصر المصـفوفة – 1 ) أمـا الحلقـة الثانيـة فهـي تتحـرك ببساطــة ( عــدد
عـناصر المصفوفة رقم الخطوة التي وصلت إليها الحلقة الثانية).
الآن سنقوم بكتابة الكـود الذي ينظم هذه العـملية ، وهـو كالتالي:
CODE
1. #include <iostream>
2. using namespace std;
3.
4. int main()
5. {
6. int array[5]={50,32,93,2,74};
7. int sure=0;
8. int x=0;
9. cout << "Here is the Array befor sorted\n";
10. for (int j=0;j<5;j++)
11. cout << array[j] << endl;
12.
13. for (int i=0;i<5-1;i++) {
14. sure=0;
15. for (int j=i; j<5;j++) {
16. if (array[j] <array[i]) {
17. x=array[j];
18. array[j]=array[i];
19. array[i]=x;
20. sure=1;
21. }
22. }
23. if (sure ==0) break;
24. }
25.
26. cout << "Here is the Array after sorted\n";
27. for (i=0;i<5;i++)
28. cout << array[i] << endl;
29.
30. return 0;
31. }
سأترك لك شرح الكـود الحالي وفي حال عــدم فهــمك لـه فعــد للكـلام عــن
تصنيف الفقاعـات النظـري وحـاول أن تفهــم المثـال الـذي جلبتـه إليـه لفهــم
خوارزمية تصنيف الفقاعات.
انتهينا الآن من الكلام عـن أساسيات المصفوفات وموضوع المصفوفات يعتبـر
مقدمـة صغيرة للغاية عـن مواضيع كبيرة مثل المكدسـات والأشـجار والقـوائم
المترابطـة.. إلخ ، وسننقل الآن إلى موضوع السلاسل والتي هي في جانـب
من جوانبها عبارة عـن مصفوفة حرفية.

ليست هناك تعليقات:

إرسال تعليق