Bubble Sorts
والتي خوارزميتها كما فهمت
خطوة1 :
1- نقارن بين العنصر الأول والذي يليه بحيث إذا كان أكبر منه نقوم بعملية التبديل swap
2- نقارن بين العنصر الثاني والثالث وهكذا حتى يصل إلى نهاية المصفوفة
معنى ذلك أنه يدفع العدد الكبير إلى آخر المصفوفة (طبعاً إذا حصل عدد أكبرمنه يأخد الأكبر ويقوم بدفعه )
خطوة2 :
يسوي نفس الخطوة السابقة عدد n-1 مرة
بس في التكرار الداخلي (اللي هو تكرار المقارنة ) لايصل إلى نهاية المصفوفة ( لأننا رتبنا العناصر سابقا فيها) وإنما فقط يصل إلى n-pass
Quicksort
وهذي مدري وش سالفته أبداً
More Bubble Sorts
وهذي يمكن اعتبر نفسي استوعبتها نوعاً ما
فهمتها فقط من المثال اللي في الشرائح (في المرفقات شرائح درس اليوم)
void bubbleSort3(int x[ ], int n) {
bool exchanges;
do { n--;
exchanges = false;
for (int i=0; i<n; i++) {
if (x[i] > x[i+1]) {
int temp = x[i];
x[i] = x[i+1];
x[i+1] = temp;
exchanges = true;
}
}
} while (exchanges);
}
عرفنا المتغير exchanges من النوع bool (ماهو الغرض منه ؟)
لاحظ التكرار الخارجي غير محصور بعدد من الخطوات فقط عندما يأخذ هذا المتغير قيمة false ينهي التكرار (لماذا)
لأنه وببساطة عندما دخل في التكرار الداخلي ولم يجري أي تعديل دل ذلك على أن المصفوفة قد تم ترتيبها (كيف عرفت ؟)
لأن عمليات المقارنة متعدية ( ما معنى هذا الكلام)
a0 > a1 And a1 > a2 فهذا يقتضي بالضرورة أن a0 > a2
أرجوا أن يكون فهمي صحيحاً