Sortowanie bąbelkowe to prosty i intuicyjny algorytm sortowania. Wielokrotnie zamienia sąsiednie elementy, jeśli są w niewłaściwej kolejności, dopóki tablica nie zostanie posortowana. W tym algorytmie największy element „bąbelkuje” do końca tablicy w każdej iteracji. Sortowanie bąbelkowe jest nieefektywne w przypadku dużych zbiorów danych, ale jest przydatne do celów edukacyjnych i małych zbiorów danych. W tym artykule zaimplementujemy algorytm sortowania bąbelkowego w języku programowania C.
Pierwszym krokiem jest zdefiniowanie funkcji sortowania bąbelkowego. Ta funkcja przyjmuje jako parametry tablicę liczb całkowitych i rozmiar tablicy. Funkcja nic nie zwraca, ponieważ modyfikuje oryginalną tablicę. Tutaj jest definicja funkcji:
rzuć ciąg na int
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>
Funkcja ma dwie pętle. Zewnętrzna pętla biegnie od pierwszego elementu do przedostatniego elementu tablicy. Wewnętrzna pętla biegnie od pierwszego elementu do przedostatniego elementu nieposortowanej części tablicy. Warunek wewnętrznej pętli to n - i - 1, ponieważ ostatnie elementy i tablicy są już posortowane.
W każdej iteracji wewnętrznej pętli porównujemy sąsiednie elementy. Jeśli lewy element jest większy od prawego, zamieniamy je. Po zakończeniu wewnętrznej pętli największy element na pewno znajdzie się na końcu nieposortowanej części tablicy.
Teraz możemy napisać główną funkcję, aby przetestować naszą implementację sortowania bąbelkowego. Oto główna funkcja wraz z poprzednią częścią:
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('Sorted array: '); 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>
Dane wyjściowe pokazują, że nasza implementacja sortowania bąbelkowego poprawnie posortowała tablicę w kolejności rosnącej.
Aby uruchomić program, musimy go skompilować za pomocą kompilatora C. Oto przykład polecenie kompilacji dla GCC:
gcc -o bubble_sort bubble_sort.c
To polecenie kompiluje plik bubble_sort.c i tworzy plik wykonywalny o nazwie bubble_sort.
Podsumowując, algorytm sortowania bąbelkowego wielokrotnie zamienia sąsiednie elementy, aż tablica zostanie posortowana. Algorytm ma złożoność czasową O(n2), co czyni go nieefektywnym w przypadku dużych zbiorów danych. Jest jednak przydatny do celów edukacyjnych i małych zbiorów danych. Zaimplementowaliśmy algorytm sortowania bąbelkowego w języku programowania C i przetestowaliśmy go na prostym przykładzie.
Charakterystyka:
- Sortowanie bąbelkowe to prosty algorytm sortowania.
- Działa poprzez wielokrotną zamianę sąsiadujących elementów, jeśli są w niewłaściwej kolejności.
- Algorytm sortuje tablicę w kolejności rosnącej lub malejącej.
- Ma złożoność czasową O(n2) w najgorszym przypadku, gdzie n jest rozmiarem tablicy.
Stosowanie:
- Sortowanie bąbelkowe jest przydatne do celów edukacyjnych i małych zbiorów danych.
- Nie nadaje się do dużych zbiorów danych ze względu na złożoność czasową.
Zalety:
- Sortowanie bąbelkowe jest łatwe do zrozumienia i wdrożenia.
- Sortowanie wymaga minimalnej dodatkowej przestrzeni pamięci.
Niedogodności:
- Nie jest ona skuteczna w przypadku dużych zbiorów danych ze względu na złożoność czasową.
- Ma słabą wydajność w porównaniu z innymi algorytmami sortowania, takimi jak sortowanie szybkie i sortowanie przez scalanie.
Wniosek:
Sortowanie bąbelkowe to prosty i intuicyjny algorytm sortowania przydatny do celów edukacyjnych i małych zbiorów danych. Jednak jego złożoność czasowa sprawia, że jest nieefektywny w przypadku dużych zbiorów danych. Dlatego nie jest powszechnie stosowany w zastosowaniach w świecie rzeczywistym. Inne algorytmy sortowania, takie jak sortowanie szybkie i sortowanie przez scalanie, są bardziej wydajne w przypadku dużych zbiorów danych.