Hallo,
Ich habe ein Problem, bei dem ich zur Zeit nicht weiterkomme, da ich mich immer wieder in den Formulierungen verirre, da ich nicht ganz durchblicke...
Programm:
Ich möchte eine Datei auslesen, in der Zahlen stehen, diese werden in ein Array eingelesen, und dann mit Quick/Bubble/egal welchem Sort sortiert. Dabei möchte ich einstellen wie viele Zahlen sortiert werden, zB 10, 100, wie auch immer.
Die Überlegung ist, mehrere Klassen zu haben, eine in der die Zahlen eingelesen werden, in den anderen werden die Zahlen je nach Klasse von einem bestimmten Algorithmus sortiert. Also in der Klasse Quicksort, nach Quicksort usw.
Das einlesen und in ein Array umwandeln klappt so weit, die einzelnen Sortierverfahren sind auch nicht das Problem, da diese tausendfach im Internet stehen. Das eigentliche Problem ist die Verknüpfung zwischen den Klassen, also wie rufe ich eine Methode in der Klasse auf. Ich habe dies noch nie gemacht, versuche es schon seit ein paar Tagen und immer wieder ist irgendetwas falsch, deshalb frage ich euch.
Ich kopier mal die wichtigen Teile des Codes rein: (...) = nicht wichtig für die Frage, rausgekürtzt für Übersichtlichkeit
Beispiel ausm Internet Quicksort: (Das wäre dann eine andere Klasse)
Ich hoffe ich habe alles verständlich dargestellt und würde euch bitten mir irgendwie zu helfen, da ich hier absolut nicht weiterkomme.
Ich habe ein Problem, bei dem ich zur Zeit nicht weiterkomme, da ich mich immer wieder in den Formulierungen verirre, da ich nicht ganz durchblicke...
Programm:
Ich möchte eine Datei auslesen, in der Zahlen stehen, diese werden in ein Array eingelesen, und dann mit Quick/Bubble/egal welchem Sort sortiert. Dabei möchte ich einstellen wie viele Zahlen sortiert werden, zB 10, 100, wie auch immer.
Die Überlegung ist, mehrere Klassen zu haben, eine in der die Zahlen eingelesen werden, in den anderen werden die Zahlen je nach Klasse von einem bestimmten Algorithmus sortiert. Also in der Klasse Quicksort, nach Quicksort usw.
Das einlesen und in ein Array umwandeln klappt so weit, die einzelnen Sortierverfahren sind auch nicht das Problem, da diese tausendfach im Internet stehen. Das eigentliche Problem ist die Verknüpfung zwischen den Klassen, also wie rufe ich eine Methode in der Klasse auf. Ich habe dies noch nie gemacht, versuche es schon seit ein paar Tagen und immer wieder ist irgendetwas falsch, deshalb frage ich euch.
Ich kopier mal die wichtigen Teile des Codes rein: (...) = nicht wichtig für die Frage, rausgekürtzt für Übersichtlichkeit
Java:
public class QuicksortMain {
/**
* @param args
*/
public static void main(String[] args) {
(...) Zahlen aus .txt datei auslesen und in list array, hinterher mit toIntArray in normales
Array umwandeln(...)
==> hier möchte ich auf die anderen Klassen zugreifen, um die verschiedenen Sortierverfahren
zu benutzen ( Ist die Stelle hier richtig?)
}
private static int[] toIntArray(){
(...)
}
}
Java:
public class Quicksort {
private int[] numbers;
private int number;
public void sort(int[] values) {
// Check for empty or null array
if (values ==null || values.length==0){
return;
}
this.numbers = values;
number = values.length;
quicksort(0, number - 1);
}
private void quicksort(int low, int high) {
int i = low, j = high;
// Get the pivot element from the middle of the list
int pivot = numbers[low + (high-low)/2];
// Divide into two lists
while (i <= j) {
// If the current value from the left list is smaller then the pivot
// element then get the next element from the left list
while (numbers[i] < pivot) {
i++;
}
// If the current value from the right list is larger then the pivot
// element then get the next element from the right list
while (numbers[j] > pivot) {
j--;
}
// If we have found a values in the left list which is larger then
// the pivot element and if we have found a value in the right list
// which is smaller then the pivot element then we exchange the
// values.
// As we are done we can increase i and j
if (i <= j) {
exchange(i, j);
i++;
j--;
}
}
// Recursion
if (low < j)
quicksort(low, j);
if (i < high)
quicksort(i, high);
}
private void exchange(int i, int j) {
int temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
}