وأوضح فرز الفقاعات
تمامًا مثل الطريقة التي ترتفع بها الفقاعات من قاع الزجاج ، فإن فرز الفقاعات عبارة عن خوارزمية بسيطة تقوم بفرز القائمة ، مما يسمح للقيم المنخفضة أو الأعلى بالظهور إلى الأعلى. تجتاز الخوارزمية قائمة وتقارن القيم المجاورة ، وتبديلها إذا لم تكن بالترتيب الصحيح.
مع تعقيد أسوأ حالة لـ 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]
من الواضح أن فرز الفقاعات بعيد كل البعد عن خوارزمية الفرز الأكثر كفاءة. لا يزال ، من السهل أن تلتف حول نفسك وتنفذ نفسك.
اذهب الآن وصب لنفسك مشروبًا باردًا يحتوي على شمبانيا - أنت تستحقه.