Sortowanie bąbelkowe

Sortowanie bąbelkowe wzięło swoją nazwę, od widocznego efektu algorytmu. Zauważamy wtedy, że liczby sortowane „wędrują” po tablicy na swoje miejsce, na podobieństwo bąbelków powietrza w wodzie. Algorytm sortowania bąbelkowego jest najprostszym algorytmem sortowania. Polega on na porównaniu liczb i zamianie ich miejscami, jeśli spełniają dany warunek. Np.: [code=cpp]If (A[1]>A[2])[/code] Aby dokonać zamiany, program potrzebuje tak zwanej zmiennej pomocniczej. Wówczas jedna z liczb, chwilowo, przechowywana jest w zmiennej pomocniczej, podczas, gdy ona sama w tablicy zostaje nadpisana drugą.

Sortowanie bąbelkowe wzięło swoją nazwę, od widocznego efektu algorytmu. Zauważamy wtedy, że liczby sortowane „wędrują” po tablicy na swoje miejsce, na podobieństwo bąbelków powietrza w wodzie. Algorytm sortowania bąbelkowego jest najprostszym algorytmem sortowania. Polega on na porównaniu liczb i zamianie ich miejscami, jeśli spełniają dany warunek. Np.:

[code=cpp]If (A[1]>A[2])[/code]

Aby dokonać zamiany, program potrzebuje tak zwanej zmiennej pomocniczej. Wówczas jedna z liczb, chwilowo, przechowywana jest w zmiennej pomocniczej, podczas, gdy ona sama w tablicy zostaje nadpisana drugą. Następnie druga liczbę program nadpisuje liczbą zawartą w zmiennej pomocniczej: Dodajemy do naszego warunku zamianę:

[code=cpp]If (A[1]>A[2]){ zp = A[1]; A[1]=A[2]; A[2]=zp; }[/code]

W programie powinna znajdować się flaga (zmienna integer mająca postać 0 lub 1, lub zmienna boolean, będąca true lub false), która czuwa nad tym, aby program nie działał w nieskończoność, porównując posortowaną tablicę. Jeżeli, spełniając warunek program dokona zmian w tablicy, zmienia wartość flagi. Kiedy flaga zostanie zmieniona, program po sprawdzeniu całej tablicy, powtórzy jeszcze raz sprawdzanie. Warto pamiętać, by przy rozpoczęciu sprawdzania ustawić flagę na początkową wartość. Jeżeli po sprawdzeniu tablicy flaga nie zmieni wartości, wówczas nie dokonano żadnych zmian i program kończy pracę. Złożoność czasowa programu wynosi: O(n2) a pamięciowa O(1). Gdzie n, to ilość liczb w tablicy. Zmienna s pomoże nam stworzyć losową (random)tablicę liczb. Zmienna k liczy ilość powtórzeń. Pomaga także wystartować programowi. Oto przykładowy algorytm sortowania bąbelkowego:

[code=cpp]int zp=0; boolean flaga = false; int s=0; int k=0; int A[5]=null

if (A==null){ //tworzymy tablicę przypadkowych liczb od 0 do 100 jeśli tablica jest pusta (A=null) For (int i=0;i<5;i++){ s=random(100); A[i]=s; } } k+=1; if (flaga=true || k=1){ //jeżeli flaga zmieniona (były zmiany w tablicy) lub jest to pierwszy raz (k=1) flaga=false; //ustawiamy początkową wartość flagi

// sortowanie

for (int j=1;j<5;j++){ //porównanie dokonywane jest tyle razy, ile jest elementów w tablicy if (A[j-1]>A[j]){ zp = A[j]; //dokonujemy zamiany elementów tablicy miejscami A[j]=A[j-1]; A[j-1]=zp; flaga=true;} //zmiana flagi, oznacza dokonanie zmiany w tablicy } }[/code]

Nie pozostaje nam nic innego,jak wyświetlenie wyników sortowania i zakończenie programu.