logo

Program pro třídění bublin v C

Bublinové řazení je jednoduchý a intuitivní třídicí algoritmus. Opakovaně zaměňuje sousední prvky, pokud jsou ve špatném pořadí, dokud není pole seřazeno. V tomto algoritmu největší prvek „probublává“ až na konec pole v každé iteraci. Bublinové třídění je neefektivní pro velké soubory dat, ale je užitečné pro vzdělávací účely a malé soubory dat. V tomto článku budeme implementovat algoritmus pro třídění bublin v programovacím jazyce C.

Prvním krokem je definování funkce bublinového třídění. Tato funkce bere jako své parametry celočíselné pole a velikost pole. Funkce nevrací nic, protože upravuje původní pole. Zde je definice funkce:

 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>

Funkce má dvě smyčky. Vnější smyčka probíhá od prvního prvku k předposlednímu prvku pole. Vnitřní smyčka probíhá od prvního prvku k předposlednímu prvku neseřazené části pole. Podmínka vnitřní smyčky je n - i - 1, protože poslední i prvky pole jsou již seřazeny.

V každé iteraci vnitřní smyčky porovnáváme sousední prvky. Pokud je levý prvek větší než pravý prvek, prohodíme je. Po dokončení vnitřní smyčky je zaručeno, že největší prvek bude na konci neseřazené části pole.

Nyní můžeme napsat hlavní funkci pro testování naší implementace řazení podle bublin. Zde je hlavní funkce spolu s předchozí částí:

Program C:

 #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>

Tento výstup ukazuje, že naše implementace řazení podle bublin správně seřadila pole ve vzestupném pořadí.

Abychom mohli program spustit, musíme jej zkompilovat pomocí kompilátoru C. Zde je příklad kompilační příkaz pro GCC:

 gcc -o bubble_sort bubble_sort.c 

Tento příkaz zkompiluje soubor bubble_sort.c a vytvoří spustitelný soubor s názvem bubble_sort.

Stručně řečeno, algoritmus bublinového řazení opakovaně zaměňuje sousední prvky, dokud není pole seřazeno. Algoritmus má časovou složitost O(n2), díky čemuž je pro velké soubory dat neefektivní. Je však užitečný pro vzdělávací účely a malé soubory dat. Implementovali jsme algoritmus pro třídění bublin v programovacím jazyce C a otestovali jej na jednoduchém příkladu.

Vlastnosti:

  • Bubble sort je jednoduchý třídicí algoritmus.
  • Funguje to tak, že se opakovaně vyměňují sousední prvky, pokud jsou ve špatném pořadí.
  • Algoritmus seřadí pole ve vzestupném nebo sestupném pořadí.
  • Má časovou složitost O(n2) v nejhorším případě, kde n je velikost pole.

Používání:

  • Bublinové třídění je užitečné pro vzdělávací účely a malé soubory dat.
  • Není vhodný pro velké datové soubory z důvodu časové náročnosti.

výhody:

  • Bublinové třídění je snadné pochopit a implementovat.
  • K provedení řazení vyžaduje minimální další paměťový prostor.

Nevýhody:

  • Není efektivní pro velké soubory dat kvůli své časové složitosti.
  • Má slabý výkon ve srovnání s jinými třídicími algoritmy, jako je quicksort a mergesort.

Závěr:

Bublinové třídění je jednoduchý a intuitivní třídicí algoritmus, který je užitečný pro vzdělávací účely a malé soubory dat. Jeho časová složitost ho však činí neefektivním pro velké soubory dat. Proto se běžně nepoužívá v reálných aplikacích. Jiné třídicí algoritmy, jako je quicksort a mergesort, jsou pro velké soubory dat efektivnější.