فهم طريقة فرز الصفيف في PHP باستخدام الطريقة المباشرة (Bubble Sort)
فرز البيانات هو عملية هامة في البرمجة تتيح لك تنظيم البيانات بحيث تكون مرتبة بشكل صحيح. إذا كنت تستخدم PHP وترغب في فرز صفيف بطريقة مباشرة، يمكنك استخدام طريقة فرز الفقاعات (Bubble Sort). هذه الطريقة تعتبر من الطرق البسيطة والسهلة لفهم وتنفيذ، ولكنها ليست الأكثر كفاءة من حيث الأداء عند التعامل مع مجموعات بيانات كبيرة.
-
طريقة توليد أرقام عشوائية في C11/03/2024
-
تنسيق العملة في JavaScript02/03/2024
-
إنشاء قوائم متغيرة الحجم في C13/04/2024
لفهم كيفية استخدام Bubble Sort لفرز صفيف PHP، دعنا نبدأ بالتعرف على الطريقة نفسها:
مبدأ عمل Bubble Sort:
- يقوم Bubble Sort بتكرار المرور عبر الصفيف أكثر من مرة.
- في كل مرور، يقارن العناصر المتتالية في الصفيف ويقوم بتبديلها إذا كانت في الترتيب الخاطئ (الأصغر/الأكبر).
- يستمر الفرز حتى لا يتم القيام بأي تبديل، مما يعني أن الصفيف أصبح مرتبا.
الآن، لنقم بتطبيق هذا المبدأ على صفيف PHP بسيط. افترض أن لديك صفيف يحتوي على الأرقام التالية:
php$arr = array(1, 3, 2, 8, 5, 7, 4, 6, 0);
الآن، يمكننا كتابة وظيفة تقوم بتطبيق Bubble Sort على هذا الصفيف:
phpfunction bubbleSort($arr) {
$n = count($arr);
for ($i = 0; $i < $n - 1; $i++) {
for ($j = 0; $j < $n - $i - 1; $j++) {
if ($arr[$j] > $arr[$j + 1]) {
$temp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $temp;
}
}
}
return $arr;
}
$arr = array(1, 3, 2, 8, 5, 7, 4, 6, 0);
$sortedArr = bubbleSort($arr);
echo "Sorted array: ";
foreach ($sortedArr as $value) {
echo $value . " ";
}
باستخدام الوظيفة bubbleSort()
، يتم تنفيذ فرز الفقاعات على الصفيف الذي تم تمريره، ثم يتم طباعة النتيجة المرتبة. تذكر أن Bubble Sort ليست الأكثر كفاءة، لكنها تعتبر جيدة للتعلم وللاستخدام مع مجموعات صغيرة من البيانات.
المزيد من المعلومات
بالتأكيد، إليك المزيد من المعلومات حول فرز الصفيف بطريقة الفقاعات في PHP:
التحسينات على Bubble Sort:
- يمكن تحسين أداء Bubble Sort عن طريق إيقاف التنفيذ إذا لم يتم أي تبديل في جولة معينة. يشير هذا إلى أن الصفيف قد أصبح مرتبًا ولا حاجة لمواصلة الفرز.
- كما يمكن تحسينه عن طريق تقليل عدد المقارنات في كل جولة. يمكن القيام بذلك عن طريق تقليل الحد الأقصى لمؤشر الجولة الداخلية.
تنفيذ Bubble Sort محسن الأداء:
phpfunction bubbleSort($arr) {
$n = count($arr);
$swapped = true;
for ($i = 0; $i < $n - 1 && $swapped; $i++) {
$swapped = false;
for ($j = 0; $j < $n - $i - 1; $j++) {
if ($arr[$j] > $arr[$j + 1]) {
$temp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $temp;
$swapped = true;
}
}
}
return $arr;
}
$arr = array(1, 3, 2, 8, 5, 7, 4, 6, 0);
$sortedArr = bubbleSort($arr);
echo "Sorted array: ";
foreach ($sortedArr as $value) {
echo $value . " ";
}
هذا الكود يحتوي على متغير $swapped
يتحقق في كل جولة. إذا لم يتم أي تبديل، يتم تعيينه إلى false
، مما يدل على أن الصفيف أصبح مرتبًا ويمكن إيقاف التنفيذ.
التعقيد الزمني لـ Bubble Sort:
- Bubble Sort يتميز بتعقيد زمني مربعي O(n^2) في أسوأ الحالات، حيث يقوم بمقارنة كل عنصر بكل العناصر الأخرى.
- هذا يعني أنه لو كان لديك صفيف من n عناصر، فسيحتاج Bubble Sort إلى مرور بالصفيف n مرة وكل مرة سيقوم بمقارنة n-1 عنصرًا، مما يجعل العدد الإجمالي لعمليات المقارنة يساوي n * (n-1) = n^2 – n.
على الرغم من أن Bubble Sort ليس الأكثر فعالية من حيث الأداء، إلا أنه يمكن أن يكون مفيدًا للتعلم وفهم كيفية عمل خوارزميات الفرز.