Sortieralgorythmen bzw. Suchalgorythmen grafisch darstellen

Status
Nicht offen für weitere Antworten.
M

M0n€y

Gast
Hallo!
Also, ich würde gerne ein Programm schreiben, dass z.B. Quicksort grafisch darstellt. Ich denke schon längere Zeit darüber nach, hat jemand eine Idee bzw. einen Ansatz wie ich das programmieren könnte? Mit grafisch Darstellen meine ich z.B. 10 Bälle in einer Reihe mit einer Beschriftung oder ähnliches.
Ein Problem das mir beim überlegen aufgefallen ist, ist dass es warscheinlich viel zu schnell sortiert wird für das menschliche Auge, also gibt es ne möglichkeit die Sache etwas langsamer zu machen?
mfg M0n€y
 

Bleiglanz

Gesperrter Benutzer
nein, zu zeichnest die "Werte"

(1,a_1)

(2,a_3)


(100,a_100)

in ein x-y Koordinatensystem


das ist am Anfang ist das eine chaotische Punktwolke

während der Algo läuft, "sieht" man wie sich die Wolke in eine monoton wachsende Folge verwandelt...
 

Bleiglanz

Gesperrter Benutzer
zwar nicht ganz so schick
Code:
public class QuicksortVisualisierung extends JFrame {
    
    public final byte[] numbers = new byte[255]; 

    public QuicksortVisualisierung() {
        this.setSize(300, 300);
        this.setTitle("QS ");
        new Random().nextBytes(this.numbers);
        this.add(new JComponent() {
            protected void paintComponent(Graphics g) {
                for (int i = 0; i < 255; i++) {
                    ((Graphics2D) g).fillOval(10+i,
                            150 - QuicksortVisualisierung.this.numbers[i],5, 5);
                }}});
    }
 
    public void quicksort (int unten, int oben) throws InterruptedException
    {
        int i=unten, j=oben;
        byte pivot = this.numbers[(unten+oben)/2];
        while (i<=j)
        {    
            while (this.numbers[i]<pivot) i++; 
            while (this.numbers[j]>pivot) j--;
            if (i<=j)
            {
              byte tmp = this.numbers[j];
              this.numbers[j--] = this.numbers[i];
              this.numbers[i++] = tmp;
              Thread.sleep(15); 
              this.repaint();
            }
        }

      if (unten<j) quicksort(unten, j);
      if (i<oben) quicksort(i, oben);
    } 
    
    public static void main(String[] args) throws InterruptedException {
        QuicksortVisualisierung f = new QuicksortVisualisierung();
        f.setVisible(true);
        f.quicksort(0,254); 
    }
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben