Moje zadanie to zdekomponowanie kodu BubbleSort na funkcje, oczywiście w taki sposób by nie zmienić jego działania. Funkcje, które powinny pojawić się w kodzie:
sort - sortuje podaną tablicę
swap - zamienia miejscami dwa elementy w tablicy na wskazanych pozycjach
isGreaterThan - sprawdza czy element na pozycji x jest większy niż element na pozycji y w podanej tablicy
printNumbers - wypisuje aktualne wartości tablicy (w takiej kolejności, w jakiej występują)
Potrzebuję dowiedzieć czy mój tok myślenia jest dobry i jeśli tak to w jaki sposób wywołać napisane funkcje, co zmienić ?
public class BubbleSort {
public static void main(String[] args) {
int[] numbers = new int[] { 4, 2, 0, 2, 10, 1, 9, 12, 3, 5 };
for (int i = 0; i < numbers.length; i++) {
for (int j = 0; j < numbers.length - 1; j++) {
if (numbers[j] > numbers[j + 1]) {
int temp;
temp = numbers[j + 1];
numbers[j + 1] = numbers[j];
numbers[j] = temp;
}
}
}
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
}
}
KOD zdekomponowany
import java.util.Arrays;
public class BubbleSortDe {
public static void main(String[] args) {
int[] numbers = new int[] { 4, 2, 0, 2, 10, 1, 9, 12, 3, 5 };
printNumbers(numbers);
}
public static void sort(int[] number) {
Arrays.sort(number);
}
public static void swap (int[] number, int i, int temp) {
temp = number[i+1];
number[i+1] = number[i];
number[i]=temp;
}
public static boolean isGreaterThan (int[] number) {
for(int i=0; i<number.length; i++) {
for(int j=0; j<i; j++) {
if (number[i]>number[i+1]) {
swap(number, i, j);
}
else {
return false;
}
}
}
return true;
}
public static void printNumbers(int[] number) {
System.out.print(Arrays.toString(number));
}
}
public static boolean isGreaterThan (int[] number, int x, int y) { boolean czyWieksza = false; if (number[x]>number[y]) { czyWieksza = true; } return czyWieksza; }
public static int swap (int[] number, int i) { int temp = number[i+1]; number[i+1] = number[i]; number[i]=temp; return temp; }