Java - Sortieren durch direktes Auswählen (Minimumsuche)

Die Idee des vielleicht einfachsten Sortieralgorithmus ist die folgende: Finde zuerst das kleinste Element im Datenarray und tausche dieses gegen das an der ersten Stelle befindliche Element aus. Anschließend finde das zweitkleinste Element, tausche es gegen das zweite aus...

Das Endergebnis ist eine sortierte Liste von Zufalls-zahlen. Die Zahlen werden als entsprechend hohe Rechtecke gleicher Breite dargestellt - der Sortier-vorgang kann dadurch »beobachtet« werden ..

Beispiel:


Code:

import java.awt.*;
import java.util.Random;

public class minimum extends java.applet.Applet {

    int h[] = new int[101];

    public void init() {
	int i;
	Random r = new Random();	
	for (i=1;i<=100;i++) {
   	    h[i]=(int)(r.nextDouble()*100);
	}
    }

    public void paint(Graphics g) {
	int i;
	int min;
	int j;
	int l;
	int hilfsvar;

	g.setColor(Color.white);
	g.fillRect(0,0,500,100);
	g.setColor(Color.black);
	for (l=1;l<=100;l++) {
	    g.fillRect(l*5,100-h[l],3,h[l]);
	}
	
	for (i=1;i<=100;i++) {
	    min=i;
	    for (j=i+1;j<=100;j++) {
	    for (int pause=0;pause<100000;pause++) {}
		if (h[j]<h[min]) min=j;
	    }
	    g.setColor(Color.white);
	    g.fillRect(min*5,0,5,100);
	    g.fillRect(i*5,0,5,100);
	    hilfsvar = h[min];
	    h[min]=h[i];
	    h[i]=hilfsvar;
	    g.setColor(Color.black);
	    g.fillRect(min*5,100-h[min],3,h[min]);
	    g.fillRect(i*5,100-h[i],3,h[i]);
	}
    }
}

Kommentar:

Diese Sortiermethode ist für kleine Dateien sehr gut brauchbar. Zu beachten ist, dass jedes Element tatsächlich nur einmal getauscht wird.


zurück zu Sortieralgorithmen