لإعطاء هذا القسم دفعـة قويـة للأمام ... وضعت هذا الموضوع من كتاب الإكسير:
تصنيف الفقاعات Bubble Sorting :
تعتبر هذه الطريقـة هـي طريقـة فرز وتصنيف ، وقد تتساءل عـن فائدة التصنيف أو الفرز والذي يعـني ترتيب البيانات وفق ترتيب معـين ، الفائدة الكبرى هـو تسهيل عـملية البحث على الحاسب وبالتالي القدرة على التعامل مع كثير من البيانات بكفاءة كما أن هذا يمهـد لاعتماد طريقـة البحث الثنائي والتي هـي أفضل وأسرع بكثير من طريقـة البحث المتسلسل أو المتتالي ، سنتعرض في هذا الموضوع على إحدى الخوارزميات وهـي خـوارزمية تصنيف الفقاعات، هذا أحد الامثلة التي حصلت عليها من أحد الكتب يبين لك كيف تنظيم المعلومات بواسطـة تصنيف الفقاعات:
اقتباسعـناصر المصفوفة التي نـود ترتيبها أو فرزها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 ) أما الحلقة الثانية فهي تتحرك ببساطـة ( عـدد عـناصر المصفوفة – رقم الخطوة التي وصلت إليها الحلقة الثانية).
الآن سنقوم بكتابة الكـود الذي ينظم هذه العـملية ، وهـو كالتالي:
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) {
17. x=array[j];
18. array[j]=array;
19. array=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 << endl;
29.
30. return 0;
31. }سأترك لك شرح الكـود الحالي وفي حال عـدم فهـمك له فعـد للكلام عـن تصنيف الفقاعات النظري وحاول أن تفهـم المثال الذي جلبته إليه لفهـم خوارزمية تصنيف الفقاعات.