Hallo,
Ich habe folgendes Problem. Ich habe vor kurzen angefangen mich ein bisschen in die Java Programmiersprache reinzuarbeiten und habe eine kleine Frage bezüglich der Minimumsuche. Das Programm läuft bereits:
Nun möchte ich folgenden Zähler einbauen:
Ich weiß das ich diesen Zähler hinter den Teil bei der Minimumsuche einsetzten muss, der für die Zähl bzw Austausch Operationen verantwortlich ist. Ich habe wirklisch schon alles versucht... Ich hoffe ihr könnt mir weiterhelfen.
Ich habe folgendes Problem. Ich habe vor kurzen angefangen mich ein bisschen in die Java Programmiersprache reinzuarbeiten und habe eine kleine Frage bezüglich der Minimumsuche. Das Programm läuft bereits:
Java:
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
public class Minimum extends Frame {
int h[] = new int[101];
public Minimum() {
int i;
Random r = new Random();
for (i=1;i<=100;i++) {
h[i]=(int)(r.nextDouble()*80);
}
}
public void paint(Graphics g) {
int i;
int min;
int j;
int l;
int hilfsvar;
g.setColor(Color.white);
g.fillRect(0,0,505,120);
g.setColor(Color.black);
for (l=1;l<=100;l++) {
g.fillRect(l*5,120-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,20,5,100);
g.fillRect(i*5,20,5,100);
hilfsvar = h[min];
h[min]=h[i];
h[i]=hilfsvar;
g.setColor(Color.black);
g.fillRect(min*5,120-h[min],3,h[min]);
g.fillRect(i*5,120-h[i],3,h[i]);
}
}
public static void main (String [] args) {
Minimum sprog = new Minimum();
WindowListener wl = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.out.println("... und aus ;-)");
System.exit(0);
}
};
sprog.addWindowListener(wl);
sprog.setTitle("Sortieren durch Minimumsuche");
sprog.setLocation(100,100);
sprog.setSize(520,120);
sprog.show();
}
}
Nun möchte ich folgenden Zähler einbauen:
Java:
...
public class Quick extends Frame {
static long vergleichezaehler;
static long tauschzaehler;
int h[] = new int[101];
public void sortiere(Container ct, int l, int r) {
...
eintrag = h[(int)((l+r)/2)];
do {
vergleichezaehler++;
while (h[i]<eintrag) {
vergleichezaehler++;
i++;
}
while (eintrag<h[j]) {
vergleichezaehler++;
j--;
}
if (i<=j) {
g.setColor(Color.white);
g.fillRect(i*5,20,5,100);
g.fillRect(j*5,20,5,100);
hilfsvar=h[i];
h[i]=h[j];
h[j]=hilfsvar;
tauschzaehler++;
g.setColor(Color.black);
g.fillRect(i*5,120-h[i],3,h[i]);
g.fillRect(j*5,120-h[j],3,h[j]);
i++;
j--;
}
} while (i<=j);
if (l<j) sortiere(ct, l, j);
if (r>i) sortiere(ct, i, r);
}
public static void main (String [] args) {
Quick sprog = new Quick();
WindowListener wl = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.out.println(vergleichezaehler + " Vergleiche");
System.out.println(tauschzaehler + " Austausche");
System.exit(0);
}
};
...
}
}
Ich weiß das ich diesen Zähler hinter den Teil bei der Minimumsuche einsetzten muss, der für die Zähl bzw Austausch Operationen verantwortlich ist. Ich habe wirklisch schon alles versucht... Ich hoffe ihr könnt mir weiterhelfen.