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.
W tym przykładzie dodamy 2 zmienne liczbaA i liczbaB, aby można łatwiej zrozumieć co się w kodzie dzieje.
xxxxxxxxxx
1
import java.util.Arrays;
2
3
public class JavaSortowaniePrzyklad1 {
4
5
public static void main(String[] args) {
6
7
int[] tablica = {3, 7, 8, 2};
8
9
System.out.println("Przed posortowaniem " + Arrays.toString(tablica));
10
11
sortownieBabelkowe(tablica);
12
13
System.out.println("Tablica posortowana " + Arrays.toString(tablica));
14
}
15
16
static void sortownieBabelkowe(int[] tablica) {
17
18
for (int i = 0; i < tablica.length; i++) {
19
20
for (int j = i + 1; j < tablica.length; j++) {
21
22
int liczbaA = tablica[i];
23
int liczbaB = tablica[j];
24
25
if (liczbaA > liczbaB) {
26
tablica[i] = liczbaB;
27
tablica[j] = liczbaA;
28
}
29
}
30
}
31
}
32
}
Wynik z konsoli:
xxxxxxxxxx
1
Przed posortowaniem [3, 7, 8, 2]
2
Tablica posortowana [2, 3, 7, 8]
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.
xxxxxxxxxx
1
import java.util.Arrays;
2
3
public class JavaSortowaniePrzyklad2 {
4
5
public static void main(String[] args) {
6
7
int[] tablica = {3, 7, 8, 2};
8
9
System.out.println("Przed posortowaniem " + Arrays.toString(tablica));
10
11
sortowanieBabelkowe(tablica);
12
13
System.out.println("Tablica posortowana " + Arrays.toString(tablica));
14
}
15
16
static void sortowanieBabelkowe(int[] tablica) {
17
System.out.println("-----");
18
19
for (int i = 0; i < tablica.length; i++) {
20
System.out.println("### Iteracja: " + (i + 1));
21
22
for (int j = i + 1; j < tablica.length; j++) {
23
24
int liczbaA = tablica[i];
25
int liczbaB = tablica[j];
26
27
if (liczbaA > liczbaB) {
28
System.out.println(liczbaB + " > " + liczbaA + " - TAK (ZAMIANA)");
29
30
// zmiana miejscami liczb w tablicy
31
tablica[i] = liczbaB;
32
tablica[j] = liczbaA;
33
34
} else if (liczbaA < liczbaB) {
35
System.out.println(liczbaB + " < " + liczbaA + " - NIE ma zmiany");
36
37
} else if (liczbaB == liczbaA) {
38
System.out.println(liczbaB + " == " + liczbaA + " - RÓWNE");
39
40
} else {
41
System.out.println("NIEMOŻLIWE :D");
42
}
43
}
44
45
System.out.println((i + 1) + " liczby posortowane: " + Arrays.toString(tablica));
46
System.out.println();
47
}
48
49
System.out.println("-----");
50
}
51
}
Wynik z konsoli:
xxxxxxxxxx
1
### Iteracja: 1
2
7 < 3 - NIE ma zmiany
3
8 < 3 - NIE ma zmiany
4
2 > 3 - TAK (ZAMIANA)
5
1 liczby posortowane: [2, 7, 8, 3]
6
7
### Iteracja: 2
8
8 < 7 - NIE ma zmiany
9
3 > 7 - TAK (ZAMIANA)
10
2 liczby posortowane: [2, 3, 8, 7]
11
12
### Iteracja: 3
13
7 > 8 - TAK (ZAMIANA)
14
3 liczby posortowane: [2, 3, 7, 8]
15
16
### Iteracja: 4
17
4 liczby posortowane: [2, 3, 7, 8]
18
19
Od min. do max. [2, 3, 7, 8]