class ArrayStructures {
/* Tworzymy tablicę o rozmiarze 10 */
private int[] theArray = new int[10];
/* To w zasadzie mozna by zastapic theArray.length */
private int arraySize = 10;
/* Funkcja wypelnia tablice losowymi liczbami
* w petli je losujemy i kolejno przypisujemy indexom tablicy theArray (tej wyzej)
*/
public void generateRandomArray() {
for (int i = 0; i < arraySize; i++) {
theArray[i] = (int)(Math.random() * 10) + 10;
}
}
/* Odpowiednik print_r z php
* przedstawia nam to co robi program w tzw. human readable format, jak odpalisz program to zobaczysz :)
*/
public void printHorzArray(int i, int j) {
for (int n = 0; n < 51; n++) System.out.print("-");
System.out.println();
for (int n = 0; n < arraySize; n++) {
System.out.print("| " + n + " ");
}
System.out.println("|");
for (int n = 0; n < 51; n++) System.out.print("-");
System.out.println();
for (int n = 0; n < arraySize; n++) {
System.out.print("| " + theArray[n] + " ");
}
System.out.println("|");
for (int n = 0; n < 51; n++) System.out.print("-");
System.out.println();
if (i != -1) {
for (int l = 0; l < (5 * (i - j) - 1); l++) System.out.print(" ");
System.out.print(i);
}
System.out.println();
}
/* Funkcja podmienia wartosci dzieki temu podczas obrotu petli najmniejsza liczba
* jest wrzucana na poczatek, a ta z poczatku laduje na miejsce tamtej, tmp jest po to
* zeby gdzies ta wartosc przechowac podczas zamiany
*/
public void swapValues(int indexOne, int indexTwo) {
int temp = theArray[indexOne];
theArray[indexOne] = theArray[indexTwo];
theArray[indexTwo] = temp;
}
/* Nasza glowna funkcja sortujaca
* Petla wewnetrzna porownuje wartosc minimalna tablicy z kolejnymi jej wartosciami
* jezeli sie okazuje ze znajduje mniejsza to wtedy przypisuje ja do minimum
* Petla zewnetrzna zamienia wartoci, znaleziana minimum = y z x oraz
* drukuje kazdy kolejny krok zebysmy mogli sledzic co sie dzieje */
public void selectionSort() {
for (int x = 0; x < arraySize; x++) {
int minimum = x;
for (int y = x; y < arraySize; y++) {
if (theArray[minimum] > theArray[y]) {
minimum = y;
}
}
swapValues(x, minimum);
printHorzArray(x, -1);
}
}
public static void main(String[] args) {
// Tworzymy nowy obiekt naszej klasy
ArrayStructures newArray = new ArrayStructures();
//Generujemy liczby
newArray.generateRandomArray();
newArray.printHorzArray(-1, -1);
/* Sortujemy :) */
newArray.selectionSort();
}
}
Staraj się trzymać zasady, że każda funkcja robi maksymalnie jedną rzecz np. jedna sortuje, druga zamienia wartości trzecia drukuje tablicę itd. i nazywaj zmienne tak zeby Ci sie bylo latwo odnalezc, bo nazwanie zmiennej t to moze oznaczac cokolwiek. Ja dzisiaj w pracy stacilem 30 min bo ktos ponazywal rzeczy idiotycznie, a przy 3000 linijkach kodu to naprawde boli :D
PS. Mam świetny kurs odnośnie Javy, jeżeli będziesz zainteresowany to odezwij się :)