Autor Beitrag
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1534
Erhaltene Danke: 214


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Sa 30.09.17 16:42 
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 github.com/coderplay...StableQuicksort.java stammt, die allerdings um diese beide:

ausblenden 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

ausblenden 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

ausblenden Quelltext
1:
InPlaceStableQuicksort.					


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

ausblenden Quelltext
1:
sort(data, comp);					


an. Letzteres wählte ich:

ausblenden 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

ausblenden 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:

ausblenden 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 www.entwickler-ecke....ewtopic.php?t=116472 zu Gemüte führte:

ausblenden 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]);
  
  }
}
Einloggen, um Attachments anzusehen!
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2086
Erhaltene Danke: 381

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Sa 30.09.17 20:12 
Guten Abend Delphi-Laie,

auf die Schnelle:

ausblenden Java-Quelltext
1:
2:
3:
4:
5:
6:
7:
static class MyComparator implements Comparator<Integer>  // statische Klasse, heißt, brauchst keine Instanz wie hier:
public static void main(String[] args) {

Comparator c = new MyComparator();  // statt
// ...

MyComparator.SomeThing();  // direkt Methoden und Sonstiges, was public ist, aufrufen

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)

Für diesen Beitrag haben gedankt: Delphi-Laie