Liebe Java-Gemeinde,
es wäre toll, wenn der ein oder andere mir bei folgendem Problem mit ein paar Denkanstößen weiterhelfen könnte. Ich soll einen Quicksort-Algorithmus für "Comparable[] values" schreiben - leider hat der Compiler bisweilen etwas dagegen. Hier erstmal der Code:
Erstmal habe ich Probleme mit dem Anfängerfehler "non-static methode ... from static context". Das verstehe ich schonmal nicht, da ich doch in der main-Methode "c" klar definiert habe. Darüber hinaus wird mir vorgeworfen "unchecked and unsafe operations" zu verwenden - das würde ich nie tun (wollen)!
Ich befürchte, dass der Code wahrscheinlich nur so vor Fehlern wimmelt. Also seid nicht zimperlich und übt schonungslos konstruktive Kritik. Ich will's ja kapieren!
es wäre toll, wenn der ein oder andere mir bei folgendem Problem mit ein paar Denkanstößen weiterhelfen könnte. Ich soll einen Quicksort-Algorithmus für "Comparable[] values" schreiben - leider hat der Compiler bisweilen etwas dagegen. Hier erstmal der Code:
Java:
public class QuickSort implements Sorter{
public static void swap(Comparable[] values, int pos_1, int pos_2){
Comparable tmp = values[pos_1];
values[pos_1] = values[pos_2];
values[pos_2] = tmp;
}
// QuickSort IN SITU
private int partition(Comparable[] values, int start, int ende){
int part = start;
Comparable pivot = values[ende];
for(int i = start; i < ende; i++){
if(values[i].compareTo(pivot) <= 0){
swap(values, i, part);
part++;
}
return part;
}
}
private void quickSort(Comparable[] values, int i, int j){
int part;
if(i < j){
part = partition(values, i, j);
swap(values, part, j);
quickSort(values, i, part-1);
quickSort(values, part+1, j);
}
}
public int sort(Comparable[] array){
int i = 0;
int j = array.length-1;
quickSort(array, i, j);
return 0;
}
}
Java:
public class TestSorter{
boolean istAufsteigendSortiert(Comparable[] array){
for(int i = 0; i<array.length; i++){
if(array[i].compareTo(array[i+1]) < 0){
return true;
}
else
return false;
}
}
public static void main(String[] args){
Comparable[] c = {1,2,3};
QuickSort.sort(c);
if(istAufsteigendSortiert(c))
System.out.println("Das Array ist aufsteigend sortiert.");
else
System.out.println("Das Array ist NICHT aufsteigend sortiert.");
}
}
Java:
interface Sorter {
// Sortiert das übergebene array aufsteigend.
public int sort(Comparable[] array);
}
Erstmal habe ich Probleme mit dem Anfängerfehler "non-static methode ... from static context". Das verstehe ich schonmal nicht, da ich doch in der main-Methode "c" klar definiert habe. Darüber hinaus wird mir vorgeworfen "unchecked and unsafe operations" zu verwenden - das würde ich nie tun (wollen)!
Ich befürchte, dass der Code wahrscheinlich nur so vor Fehlern wimmelt. Also seid nicht zimperlich und übt schonungslos konstruktive Kritik. Ich will's ja kapieren!