وأوضح فرز الفقاعات

تمامًا مثل الطريقة التي ترتفع بها الفقاعات من قاع الزجاج ، فإن فرز الفقاعات عبارة عن خوارزمية بسيطة تقوم بفرز القائمة ، مما يسمح للقيم المنخفضة أو الأعلى بالظهور إلى الأعلى. تجتاز الخوارزمية قائمة وتقارن القيم المجاورة ، وتبديلها إذا لم تكن بالترتيب الصحيح.

مع تعقيد أسوأ حالة لـ O (n ^ 2) ، يكون فرز الفقاعة بطيئًا جدًا مقارنة بخوارزميات الفرز الأخرى مثل الفرز السريع. الجانب الإيجابي هو أنها واحدة من أسهل خوارزميات الفرز للفهم والتشفير من البداية.

مثال:

let arr = [4, 2, 6, 3, 9]; let sorted = false while(!sorted) { sorted = true for(var i = 0; i < arr.length; i++) { if(arr[i] < arr[i - 1]) { let temp = arr[i]; arr[i] = arr[i - 1]; arr[i - 1] = temp; sorted = false; } } }

قم أولاً بالمرور على القائمة:

  • بدءًا من [4, 2, 6, 3, 9]، تقارن الخوارزمية أول عنصرين في المصفوفة ، 4 و 2. وتقوم بتبادلهما لأن 2 <4:[2, 4, 6, 3, 9]
  • يقارن القيمتين التاليتين ، 4 و 6. نظرًا لأن 4 <6 ، فإن هذه القيم مرتبة بالفعل ، وتنتقل الخوارزمية إلى: [2, 4, 6, 3, 9]
  • يتم أيضًا تبديل القيمتين التاليتين لأن 3 <6: [2, 4, 3, 6, 9]
  • القيمتان الأخيرتان ، 6 و 9 ، مرتبتان بالفعل ، لذلك لا تقوم الخوارزمية بتبادلهما.

ثانيًا يمر عبر القائمة:

  • 2 <4 ، لذلك ليست هناك حاجة لمبادلة المراكز: [2, 4, 3, 6, 9]
  • تقوم الخوارزمية بتبديل القيمتين التاليتين لأن 3 <4: [2, 3, 4, 6, 9]
  • لا مبادلة كـ 4 <6: [2, 3, 4, 6, 9]
  • مرة أخرى ، 6 <9 ، لذلك لا تحدث مقايضة: [2, 3, 4, 6, 9]

تم فرز القائمة بالفعل ، لكن خوارزمية فرز الفقاعة لا تدرك ذلك. بدلاً من ذلك ، يحتاج إلى إكمال مرور كامل عبر القائمة دون تبديل أي قيم لمعرفة أن القائمة مرتبة.

ثالثا يمر من خلال القائمة:

  • [2, 4, 3, 6, 9] =>[2, 4, 3, 6, 9]
  • [2, 4, 3, 6, 9] =>[2, 4, 3, 6, 9]
  • [2, 4, 3, 6, 9] =>[2, 4, 3, 6, 9]
  • [2, 4, 3, 6, 9] =>[2, 4, 3, 6, 9]

من الواضح أن فرز الفقاعات بعيد كل البعد عن خوارزمية الفرز الأكثر كفاءة. لا يزال ، من السهل أن تلتف حول نفسك وتنفذ نفسك.

اذهب الآن وصب لنفسك مشروبًا باردًا يحتوي على شمبانيا - أنت تستحقه.