logo

خوارزمية فرز الفقاعات

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

بوابة إضافة --الكل

يعمل فرز الفقاعة على التبديل المتكرر للعناصر المتجاورة حتى لا تكون بالترتيب المقصود. ويطلق عليه اسم فرز الفقاعات لأن حركة عناصر المصفوفة تشبه حركة فقاعات الهواء في الماء. ترتفع الفقاعات الموجودة في الماء إلى السطح؛ وبالمثل، تنتقل عناصر المصفوفة في نوع الفقاعة إلى النهاية في كل تكرار.

على الرغم من أنه سهل الاستخدام، إلا أنه يستخدم في المقام الأول كأداة تعليمية لأن أداء فرز الفقاعات ضعيف في العالم الحقيقي. إنها ليست مناسبة لمجموعات البيانات الكبيرة. متوسط ​​وأسوأ حالة تعقيد لنوع الفقاعة هو على2 أين ن هو عدد من العناصر.

يتم استخدام الفقاعة القصيرة بشكل رئيسي حيث -

  • التعقيد لا يهم
  • يفضل الرمز البسيط والقصير

خوارزمية

في الخوارزمية الواردة أدناه، لنفترض وصول عبارة عن مجموعة من ن عناصر. المفترض تبديل ستقوم الوظيفة في الخوارزمية بتبديل قيم عناصر المصفوفة المحددة.

 begin BubbleSort(arr) for all array elements if arr[i] > arr[i+1] swap(arr[i], arr[i+1]) end if end for return arr end BubbleSort 

العمل على خوارزمية الفرز الفقاعي

الآن، دعونا نرى عمل خوارزمية فرز الفقاعات.

لفهم عمل خوارزمية فرز الفقاعات، لنأخذ مصفوفة غير مصنفة. نحن نأخذ مصفوفة قصيرة ودقيقة، كما نعلم مدى تعقيد نوع الفقاعة على2).

دع عناصر المصفوفة هي -

خوارزمية فرز الفقاعات

أول إجتياز

سيبدأ الفرز من العنصرين الأوليين. دعونا نقارنهم لمعرفة أيهما أكبر.

خوارزمية فرز الفقاعات

هنا، 32 أكبر من 13 (32 > 13)، لذا فقد تم فرزه بالفعل. الآن، قارن 32 بـ 26.

خوارزمية فرز الفقاعات

هنا، 26 أصغر من 36. لذا، يلزم التبديل. بعد تبديل المصفوفة الجديدة ستبدو كما يلي -

خوارزمية فرز الفقاعات

والآن، قارن بين 32 و35.

خوارزمية فرز الفقاعات

هنا، 35 أكبر من 32. لذا، ليس هناك حاجة للتبديل حيث تم فرزها بالفعل.

الآن، ستكون المقارنة بين 35 و10.

سلسلة فرعية في باش
خوارزمية فرز الفقاعات

هنا، ١٠ أصغر من ٣٥ التي لم يتم فرزها. لذا فالمبادلة مطلوبة. والآن وصلنا إلى نهاية المصفوفة بعد المرور الأول، ستكون المصفوفة -

خوارزمية فرز الفقاعات

انتقل الآن إلى التكرار الثاني.

المرور الثاني

سيتم اتباع نفس العملية للتكرار الثاني.

خوارزمية فرز الفقاعات

هنا، 10 أصغر من 32. لذا، يلزم التبديل. بعد التبديل، ستكون المصفوفة -

خوارزمية فرز الفقاعات

انتقل الآن إلى التكرار الثالث.

الممر الثالث

سيتم اتباع نفس العملية للتكرار الثالث.

خوارزمية فرز الفقاعات

هنا، 10 أصغر من 26. لذا، يلزم التبديل. بعد التبديل، ستكون المصفوفة -

خوارزمية فرز الفقاعات

انتقل الآن إلى التكرار الرابع.

التمريرة الرابعة

وبالمثل، بعد التكرار الرابع، سيكون المصفوفة -

خوارزمية فرز الفقاعات

وبالتالي، ليست هناك حاجة للتبديل، لذلك تم فرز المصفوفة بالكامل.

تعقيد نوع الفقاعة

الآن، دعونا نرى التعقيد الزمني لفرز الفقاعات في أفضل حالة، ومتوسطة، وأسوأ حالة. سنرى أيضًا مدى التعقيد المكاني لنوع الفقاعة.

1. تعقيد الوقت

قضية تعقيد الوقت
أفضل حالة على)
متوسط ​​الحالة على2)
الحالة الأسوأ على2)
    أفضل تعقيد للحالة -ويحدث ذلك عندما لا يكون هناك حاجة للفرز، أي أن المصفوفة قد تم فرزها بالفعل. أفضل تعقيد زمني لنوع الفقاعة هو على). متوسط ​​تعقيد الحالة -يحدث ذلك عندما تكون عناصر المصفوفة في ترتيب مختلط لا تصاعدي بشكل صحيح ولا تنازلي بشكل صحيح. متوسط ​​التعقيد الزمني للحالة لفرز الفقاعات هو على2). أسوأ حالة تعقيد -يحدث ذلك عندما يلزم فرز عناصر المصفوفة بترتيب عكسي. هذا يعني أنه يجب عليك فرز عناصر المصفوفة بترتيب تصاعدي، ولكن عناصرها بترتيب تنازلي. أسوأ تعقيد زمني لنوع الفقاعة هو على2).

2. تعقيد الفضاء

تعقيد الفضاء يا(1)
مستقر نعم
  • التعقيد المكاني لنوع الفقاعة هو O(1). وذلك لأنه، في نوع الفقاعة، يلزم وجود متغير إضافي للتبديل.
  • التعقيد المكاني لفرز الفقاعات الأمثل هو O(2). وذلك بسبب الحاجة إلى متغيرين إضافيين في فرز الفقاعات الأمثل.

الآن، دعونا نناقش خوارزمية فرز الفقاعات المحسنة.

خوارزمية فرز الفقاعات المحسنة

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

لحلها، يمكننا استخدام متغير إضافي مبادلة. تم ضبطه على حقيقي إذا كان المبادلة تتطلب؛ خلاف ذلك، تم ضبطه على خطأ شنيع.

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

ستعمل هذه الطريقة على تقليل وقت التنفيذ وتحسين نوع الفقاعة أيضًا.

خوارزمية لفرز الفقاعات الأمثل

 bubbleSort(array) n = length(array) repeat swapped = false for i = 1 to n - 1 if array[i - 1] > array[i], then swap(array[i - 1], array[i]) swapped = true end if end for n = n - 1 until not swapped end bubbleSort 

تنفيذ نوع الفقاعة

والآن دعونا نتعرف على برامج الفرز الفقاعي بلغات البرمجة المختلفة.

تاريخ استخدام جافا

برنامج: اكتب برنامجًا لتنفيذ فرز الفقاعات بلغة C.

 #include void print(int a[], int n) //function to print array elements { int i; for(i = 0; i <n; i++) { printf('%d ',a[i]); } void bubble(int a[], int n) function to implement bubble sort i, j, temp; for(i="0;" i < n; for(j="i+1;" j j++) if(a[j] a[i]) temp="a[i];" a[i]="a[j];" a[j]="temp;" main () j,temp; a[5]="{" 10, 35, 32, 13, 26}; n="sizeof(a)/sizeof(a[0]);" printf('before sorting array elements are - 
'); print(a, n); bubble(a, printf('
after pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/52/bubble-sort-algorithm-13.webp" alt="Bubble sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement bubble sort in C++ language.</p> <pre> #include using namespace std; void print(int a[], int n) //function to print array elements { int i; for(i = 0; i <n; i++) { cout< <a[i]<<' '; } void bubble(int a[], int n) function to implement bubble sort i, j, temp; for(i="0;" i < n; for(j="i+1;" j j++) if(a[j] a[i]) temp="a[i];" a[i]="a[j];" a[j]="temp;" main() j,temp; a[5]="{45," 1, 32, 13, 26}; n="sizeof(a)/sizeof(a[0]);" cout<<'before sorting array elements are - 
'; print(a, n); bubble(a, cout<<'
after return 0; pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/52/bubble-sort-algorithm-14.webp" alt="Bubble sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement bubble sort in C# language.</p> <pre> using System; public class Bubble { static void print (int[]a) //function to print array elements { int n = a.Length; int i; for (i = 0; i <n; 26 i++) { console.write (' ' + a[i]); } static void bubble (int[]a) function to implement sort int n="a.Length;" i, j, temp; for (i="0;" i < n; (j="i" 1; j j++) if (a[j] a[i]) temp="a[i];" a[i]="a[j];" a[j]="temp;" public main () int[] a="{" 45, 1, 32, 13, }; ('
 before sorting array elements are - 
'); print (a); console.writeline (); after pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/52/bubble-sort-algorithm-15.webp" alt="Bubble sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement bubble sort in Java.</p> <pre> public class Bubble { static void print (int a[]) //function to print array elements { int n = a.length; int i; for (i = 0; i <n; i++) { system.out.print(a[i] + ' '); } static void bubblesort (int a[]) function to implement bubble sort int n="a.length;" i, j, temp; for (i="0;" i < n; (j="i" 1; j j++) if (a[j] a[i]) temp="a[i];" a[i]="a[j];" a[j]="temp;" public main(string[] args) a[]="{35," 10, 31, 11, 26}; b1="new" bubble(); system.out.println('before sorting array elements are - b1.print(a); b1.bubblesort(a); system.out.println(); system.out.println('after pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/52/bubble-sort-algorithm-16.webp" alt="Bubble sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement bubble sort in JavaScript.</p> <pre> var a = [35, 10, 31, 11, 26]; function print() //function to print array elements { for(i = 0; i <5; i++) { document.writeln(a[i]); } document.write('before sorting array elements are - ' + <br>&apos;); print(); for(i = 0; i <5; i++) { for (j="0;" j < 5; j++) if(a[i] a[j]) temp="a[i];" a[i]="a[j];" a[j]="temp;" } document.write(' <br> After sorting array elements are - &apos; + &apos; <br>&apos;); print(); </5;></5;></pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/52/bubble-sort-algorithm-17.webp" alt="Bubble sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement bubble sort in PHP.</p> <pre> <?php $a = array(2, 45, 88, 11, 5); function printArray($a) { for($i = 0; $i < 5; $i++) { print_r($a[$i]); echo ' '; } } echo 'Before sorting array elements are - <br>&apos;; printArray($a); for($i = 0; $i <5; $i++) { for ($j="0;" $j < 5; $j++) if($a[$i] $a[$j]) $temp="$a[$i];" $a[$i]="$a[$j];" $a[$j]="$temp;" } echo ' <br> After sorting array elements are - <br>&apos;; printArray($a); ?&gt; </5;></pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/52/bubble-sort-algorithm-18.webp" alt="Bubble sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement bubble sort in python.</p> <pre> a = [35, 10, 31, 11, 26] print(&apos;Before sorting array elements are - &apos;) for i in a: print(i, end = &apos; &apos;) for i in range(0,len(a)): for j in range(i+1,len(a)): if a[j] <a[i]: temp="a[j]" a[j]="a[i]" a[i]="temp" print('
after sorting array elements are - ') for i in a: print(i, end=" " ) < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/52/bubble-sort-algorithm-19.webp" alt="Bubble sort Algorithm"> <p>So, that&apos;s all about the article. Hope the article will be helpful and informative to you.</p> <p>This article was not only limited to the algorithm. We have also discussed the algorithm&apos;s complexity, working, optimized form, and implementation in different programming languages.</p> <hr></a[i]:></pre></n;></pre></n;></pre></n;></pre></n;>

انتاج |

خوارزمية فرز الفقاعات

برنامج: اكتب برنامجًا لتنفيذ فرز الفقاعات في PHP.

 <?php $a = array(2, 45, 88, 11, 5); function printArray($a) { for($i = 0; $i < 5; $i++) { print_r($a[$i]); echo \' \'; } } echo \'Before sorting array elements are - <br>&apos;; printArray($a); for($i = 0; $i <5; $i++) { for ($j="0;" $j < 5; $j++) if($a[$i] $a[$j]) $temp="$a[$i];" $a[$i]="$a[$j];" $a[$j]="$temp;" } echo \' <br> After sorting array elements are - <br>&apos;; printArray($a); ?&gt; </5;>

انتاج |

خوارزمية فرز الفقاعات

برنامج: اكتب برنامجًا لتنفيذ فرز الفقاعات في لغة بايثون.

 a = [35, 10, 31, 11, 26] print(&apos;Before sorting array elements are - &apos;) for i in a: print(i, end = &apos; &apos;) for i in range(0,len(a)): for j in range(i+1,len(a)): if a[j] <a[i]: temp="a[j]" a[j]="a[i]" a[i]="temp" print(\'
after sorting array elements are - \') for i in a: print(i, end=" " ) < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/52/bubble-sort-algorithm-19.webp" alt="Bubble sort Algorithm"> <p>So, that&apos;s all about the article. Hope the article will be helpful and informative to you.</p> <p>This article was not only limited to the algorithm. We have also discussed the algorithm&apos;s complexity, working, optimized form, and implementation in different programming languages.</p> <hr></a[i]:>