logo

برنامج فرز الفقاعات في لغة C

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

الخطوة الأولى هي تحديد وظيفة فرز الفقاعة. تأخذ هذه الوظيفة مصفوفة عدد صحيح وحجم المصفوفة كمعلمات لها. لا تُرجع الدالة شيئًا أثناء تعديل المصفوفة الأصلية. هنا هو تعريف الوظيفة:

 void bubble_sort(int arr[], int n) { int i, j; for (i = 0; i <n - 1; i++) { for (j="0;" j <n i j++) if (arr[j]> arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } </n>

تحتوي الوظيفة على حلقتين. تمتد الحلقة الخارجية من العنصر الأول إلى العنصر الثاني الأخير في المصفوفة. تمتد الحلقة الداخلية من العنصر الأول إلى العنصر الثاني الأخير من الجزء غير المصنف من المصفوفة. حالة الحلقة الداخلية هي n - i - 1 لأن آخر عناصر i في المصفوفة قد تم فرزها بالفعل.

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

الآن، يمكننا كتابة الوظيفة الرئيسية لاختبار تنفيذ الفرز الفقاعي. هذه هي الوظيفة الرئيسية مع الجزء السابق:

برنامج ج:

 #include void bubble_sort(int arr[], int n) { int i, j; for (i = 0; i <n - 1; i++) { for (j="0;" j <n i j++) if (arr[j]> arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } int main() { int arr[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof(arr) / sizeof(arr[0]); bubble_sort(arr, n); printf(&apos;Sorted array: &apos;); for (int i = 0; i <n; i++) { printf('%d ', arr[i]); } return 0; < pre> <p>The main function creates an integer array arr of size 7 and initializes it with random numbers. We then calculate the size of the array by dividing the size of the array by the size of an integer element. Next, we call the bubble_sort function to sort the array. Finally, we print the sorted array using a for loop.</p> <p> <strong>When we run the program, we should see the following output:</strong> </p> <pre> Sorted array: 11 12 22 25 34 64 90 </pre> <p>This output shows that our bubble sort implementation correctly sorted the array in ascending order.</p> <p>To run the program, we need to compile it using a C compiler. Here is an example <strong>compilation command for GCC:</strong> </p> <pre> gcc -o bubble_sort bubble_sort.c </pre> <p>This command compiles the bubble_sort.c file and produces an executable file named bubble_sort.</p> <p>In summary, the bubble sort algorithm repeatedly swaps adjacent elements until the array is sorted. The algorithm has a time complexity of O(n<sup>2</sup>), which makes it inefficient for large data sets. However, it is useful for educational purposes and small data sets. We implemented the bubble sort algorithm in C programming language and tested it using a simple example.</p> <h3>Characteristics:</h3> <ul> <li>Bubble sort is a simple sorting algorithm.</li> <li>It works by repeatedly swapping adjacent elements if they are in the wrong order.</li> <li>The algorithm sorts the array in ascending or descending order.</li> <li>It has a time complexity of O(n<sup>2</sup>) in the worst case, where n is the size of the array.</li> </ul> <h3>Usage:</h3> <ul> <li>Bubble sort is useful for educational purposes and small data sets.</li> <li>It is not suitable for large data sets because of its time complexity.</li> </ul> <h3>Advantages:</h3> <ul> <li>Bubble sort is easy to understand and implement.</li> <li>It requires minimal additional memory space to perform the sorting.</li> </ul> <h3>Disadvantages:</h3> <ul> <li>It is not efficient for large data sets because of its time complexity.</li> <li>It has poor performance compared to other sorting algorithms, such as quicksort and mergesort.</li> </ul> <h2>Conclusion:</h2> <p>Bubble sort is a simple and intuitive sorting algorithm that is useful for educational purposes and small data sets. However, its time complexity makes it inefficient for large data sets. Therefore, it is not commonly used in real-world applications. Other sorting algorithms, such as quicksort and mergesort, are more efficient for large data sets.</p> <hr></n;></n>

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

لتشغيل البرنامج، نحتاج إلى تجميعه باستخدام مترجم C. هنا مثال أمر التجميع لدول مجلس التعاون الخليجي:

 gcc -o bubble_sort bubble_sort.c 

يقوم هذا الأمر بتجميع ملف bubble_sort.c وينتج ملفًا قابلاً للتنفيذ يسمى bubble_sort.

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

صفات:

  • فرز الفقاعة هو خوارزمية فرز بسيطة.
  • إنه يعمل عن طريق تبديل العناصر المجاورة بشكل متكرر إذا كانت بالترتيب الخاطئ.
  • تقوم الخوارزمية بفرز المصفوفة بترتيب تصاعدي أو تنازلي.
  • لها تعقيد زمني O(n2) في أسوأ الحالات، حيث n هو حجم المصفوفة.

الاستخدام:

  • يعد فرز الفقاعات مفيدًا للأغراض التعليمية ومجموعات البيانات الصغيرة.
  • وهي غير مناسبة لمجموعات البيانات الكبيرة بسبب تعقيدها الزمني.

مزايا:

  • من السهل فهم وتنفيذ نوع الفقاعة.
  • يتطلب الحد الأدنى من مساحة الذاكرة الإضافية لإجراء الفرز.

سلبيات:

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

خاتمة:

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