البرمجة

فرز الصفائف باستخدام Bubble Sort

فهم طريقة فرز الصفيف في PHP باستخدام الطريقة المباشرة (Bubble Sort)

فرز البيانات هو عملية هامة في البرمجة تتيح لك تنظيم البيانات بحيث تكون مرتبة بشكل صحيح. إذا كنت تستخدم PHP وترغب في فرز صفيف بطريقة مباشرة، يمكنك استخدام طريقة فرز الفقاعات (Bubble Sort). هذه الطريقة تعتبر من الطرق البسيطة والسهلة لفهم وتنفيذ، ولكنها ليست الأكثر كفاءة من حيث الأداء عند التعامل مع مجموعات بيانات كبيرة.

لفهم كيفية استخدام Bubble Sort لفرز صفيف PHP، دعنا نبدأ بالتعرف على الطريقة نفسها:

مبدأ عمل Bubble Sort:

  • يقوم Bubble Sort بتكرار المرور عبر الصفيف أكثر من مرة.
  • في كل مرور، يقارن العناصر المتتالية في الصفيف ويقوم بتبديلها إذا كانت في الترتيب الخاطئ (الأصغر/الأكبر).
  • يستمر الفرز حتى لا يتم القيام بأي تبديل، مما يعني أن الصفيف أصبح مرتبا.

الآن، لنقم بتطبيق هذا المبدأ على صفيف PHP بسيط. افترض أن لديك صفيف يحتوي على الأرقام التالية:

php
$arr = array(1, 3, 2, 8, 5, 7, 4, 6, 0);

الآن، يمكننا كتابة وظيفة تقوم بتطبيق Bubble Sort على هذا الصفيف:

php
function 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 محسن الأداء:

php
function 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 ليس الأكثر فعالية من حيث الأداء، إلا أنه يمكن أن يكون مفيدًا للتعلم وفهم كيفية عمل خوارزميات الفرز.

زر الذهاب إلى الأعلى