PL
Java - sortowanie bąbelkowe dla początkujących
13
points
W tym wiki artykule możemy zobaczyć jak prosto posortować tablice w javie przy użyciu algorytmu bąbelkowego (Bubble sort).
Bubble sort jest jednym z podstawowych algorytmów pojawijących się w kursach programowania już na początku - zawdzięcza on to swojej prostocie.
Poniższe przykłady zawierają metodę sortownieBabelkowe
, która jest prostą implementacją takiego algorytmu sortowania.
Przykład 1
W tym przykładzie dodamy 2 zmienne liczbaA i liczbaB, aby można łatwiej zrozumieć co się w kodzie dzieje.
import java.util.Arrays;
public class JavaSortowaniePrzyklad1 {
public static void main(String[] args) {
int[] tablica = {3, 7, 8, 2};
System.out.println("Przed posortowaniem " + Arrays.toString(tablica));
sortownieBabelkowe(tablica);
System.out.println("Tablica posortowana " + Arrays.toString(tablica));
}
static void sortownieBabelkowe(int[] tablica) {
for (int i = 0; i < tablica.length; i++) {
for (int j = i + 1; j < tablica.length; j++) {
int liczbaA = tablica[i];
int liczbaB = tablica[j];
if (liczbaA > liczbaB) {
tablica[i] = liczbaB;
tablica[j] = liczbaA;
}
}
}
}
}
Wynik z konsoli:
Przed posortowaniem [3, 7, 8, 2]
Tablica posortowana [2, 3, 7, 8]
Przykład 2
W tym przykładzie dodamy sobie kod, który pokaże nam krok po kroku co się dzieje podczas sortowania tablicy. Wyniki można zobaczyć w konosli.
import java.util.Arrays;
public class JavaSortowaniePrzyklad2 {
public static void main(String[] args) {
int[] tablica = {3, 7, 8, 2};
System.out.println("Przed posortowaniem " + Arrays.toString(tablica));
sortowanieBabelkowe(tablica);
System.out.println("Tablica posortowana " + Arrays.toString(tablica));
}
static void sortowanieBabelkowe(int[] tablica) {
System.out.println("-----");
for (int i = 0; i < tablica.length; i++) {
System.out.println("### Iteracja: " + (i + 1));
for (int j = i + 1; j < tablica.length; j++) {
int liczbaA = tablica[i];
int liczbaB = tablica[j];
if (liczbaA > liczbaB) {
System.out.println(liczbaB + " > " + liczbaA + " - TAK (ZAMIANA)");
// zmiana miejscami liczb w tablicy
tablica[i] = liczbaB;
tablica[j] = liczbaA;
} else if (liczbaA < liczbaB) {
System.out.println(liczbaB + " < " + liczbaA + " - NIE ma zmiany");
} else if (liczbaB == liczbaA) {
System.out.println(liczbaB + " == " + liczbaA + " - RÓWNE");
} else {
System.out.println("NIEMOŻLIWE :D");
}
}
System.out.println((i + 1) + " liczby posortowane: " + Arrays.toString(tablica));
System.out.println();
}
System.out.println("-----");
}
}
Wynik z konsoli:
### Iteracja: 1
7 < 3 - NIE ma zmiany
8 < 3 - NIE ma zmiany
2 > 3 - TAK (ZAMIANA)
1 liczby posortowane: [2, 7, 8, 3]
### Iteracja: 2
8 < 7 - NIE ma zmiany
3 > 7 - TAK (ZAMIANA)
2 liczby posortowane: [2, 3, 8, 7]
### Iteracja: 3
7 > 8 - TAK (ZAMIANA)
3 liczby posortowane: [2, 3, 7, 8]
### Iteracja: 4
4 liczby posortowane: [2, 3, 7, 8]
Od min. do max. [2, 3, 7, 8]