Entwickler-Ecke

Alle Sprachen - Alle Plattformen - Java: Daten(struktur) und Comparator für Sortieralgorithmus


Delphi-Laie - Sa 30.09.17 17:42
Titel: Java: Daten(struktur) und Comparator für Sortieralgorithmus
Hallo Programmierfreunde!

Schon wieder versuche ich, einen Sortieralgorithmus zum Laufen zu bringen, mal wieder mit Java. Die Beschäftigung mit meinen in diesen Forum schon zu ähnlich gestellten Fragen brachte mich nicht so recht weiter.

Es geht um die angehängte Datei, die von https://github.com/coderplay/h2-bitmap/blob/master/h2/src/tools/org/h2/dev/sort/InPlaceStableQuicksort.java stammt, die allerdings um diese beide:


Quelltext
1:
2:
package InPlaceStableQuicksort;
import java.util.Comparator;


ersten Codezeilen ergänzt wurde. Oh Wunder, die Eclipse akzeptiert das.

Die automatische Codevervollständigung bietet mir in der Hauptdatei


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
import java.util.Comparator;

import InPlaceStableQuicksort.*;

public class HalloWelt {

  public static void main(String[] args) {

  }
}


bei Eingabe von


Quelltext
1:
InPlaceStableQuicksort.                    


in der Main-Prozedur die Klasse und das eigentliche Ziel meiner Begierde,


Quelltext
1:
sort(data, comp);                    


an. Letzteres wählte ich:


Quelltext
1:
InPlaceStableQuicksort.sort(data, comp);                    


Doch nun weiß ich nicht mehr so recht weiter. Anfänglich war beides - data und com - rot unterstrichen. Die erste Hilfe, die die Eclipse mir bietet, ist die Erzeugung einer lokalen Variable


Quelltext
1:
Object[] data;                    


woraufhin "data" nicht mehr rot unterstichen wird. Doch welches Format hat "data" - ein Array, eine Liste? Es ist doch ein Objekt, also ganz allgemeinen Formates, nicht wahr?

Nehme ich auch eine der angebotenen "Lösungen" für das rot unterstichene "comp" an (die erste mit der lokalen Variable), die dann lautet:


Quelltext
1:
Comparator comp;                    


hat das nur zur Folge, daß sowohl "com" weiterhin als auch "data" erneut rot unterstrichen sind. Andere "Lösungen" sind genauso "erfolgreich".

Kurzum, ich muß den Sortieralgorithmus mit Daten / einer Datenstruktur und einem Comparator "füttern", weiß jetzt aber nicht, wie.

Kann mir jemand helfen, bitte?

Vielen Dank und Gruß

Delphi-Laie

Edit: Ein wenig schlauer bin ich inzwischen. Es wird wohl ein Array als Datenstruktur erwartet. Muß also nur noch der Comparator für dessen Elemente definiert werden....

Edit 2: Ich habe es jetzt doch hinbekommen, nachdem ich mir nochmals https://www.entwickler-ecke.de/viewtopic.php?t=116472 zu Gemüte führte:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
import java.util.Comparator;

import InPlaceStableQuicksort.*;

public class HalloWelt {

  static class MyComparator implements Comparator<Integer> {
    @Override
    public int compare(Integer i1, Integer i2) {
      return Integer.compare(i1, i2);
    }
  }
  
  public static void main(String[] args) {
  
    //System.out.println("Hallo Welt");

      Integer [] myArray = {5,4,3,2,1};
       
      Comparator c = new MyComparator(); 
      InPlaceStableQuicksort.sort(myArray,c);
      
      System.out.println(myArray[0]);
      System.out.println(myArray[1]);
      System.out.println(myArray[2]);
      System.out.println(myArray[3]);
      System.out.println(myArray[4]);
  
  }
}


Delete - Sa 30.09.17 21:12

- Nachträglich durch die Entwickler-Ecke gelöscht -