www.r-krell.de |
Webangebot für Schule und Unterricht, Software, Fotovoltaik und mehr |
Willkommen/Übersicht > Informatik > Informatik mit Java, Teil c) > Programm zum Sortieren und Suchen von Komma-Zahlen
Die Bedienung erfolgt durch die
Schaltflächen.
.Die zu sortierenden Zahlen können nicht von Hand
eingegeben werden, sondern werden zufäälig erzeugt.
Der Sortiervorgang selbst wird nicht angezeigt,
nur das jeweilige Ergebnis (ggf. Ausgabefenster scrollen!).
Die binäre Suche ([bin. Suche] bzw. [bin. S. rek.])
funktioniert nur korrekt, wenn vorher schon sortiert
wurde.
Bitte speichern Sie zunächst die
Programmdatei
Sortieren&Suchen(r-krell.de).jar (21 kB) |
auf Ihrem Computer und starten ("öffnen")
Sie dann die herunter geladene Datei durch Anklicken.
Am besten schieben Sie danach das geöffnete Programmfenster
nach oben links,
sodass Sie gleichzeitig diese Seite lesen können.
Mehr zum Start von Java-Programmen als Application (und nicht mehr als Applet) auf meiner Extraseite Übersicht über meine Java-Programme - Appletprobleme und Downloads (in neuem Tab)
Der Quelltext der Oberfläche ist unten
abgedruckt;
außerdem kann hier der Quelltext
des Programms zusammen mit der ausführbaren .jar-Datei in
einem zip-Archiv (27 kB) herunter geladen werden.
Als Java-Texte werden nur die drei .java-Dateien benötigt,
während die .jfm-Formulardatei nur für Benutzer des
Java-Editors interessant ist.
Die beigefügte .jfm-Datei funktioniert auch mit älteren
Versionen des Java-Editors; schon beim Öffnen mit einer
Version 10 oder höher
wird sie aber automatisch verändert und ist danach nicht
mehr abwärtskompatibel. Die im Archiv noch enthaltene
.jnlp-Datei wurde für den Webstart benötigt, der aber
inzwischen nicht mehr zulässig ist.
zurück zur Seite „Informatik mit Java, Teil c)"
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
/*
* description Oberfläche zu
Sortieren und Suchen von Kommazahlen -- Implementation verschiedener Verfahren
*
* @version 4.1 from 16.12.2012
* @author R. Krell, www.r-krell.de,
für www.r-krell.de/if-java-c.htm bzw. www.r-krell.de/if-c-sortapp.htm
*/
public class Sort_2012_Oberflaeche extends JFrame {
// Anfang Attribute
Sort_2012 sortierdemo = new Sort_2012(); // bindet ein Objekt ein, das die Kommazahlen enthält und die Arbeit macht
private JLabel jLbTitel = new JLabel();
private JLabel jLbAnzahl = new JLabel();
private JTextField jTfAnzahl = new JTextField();
private JLabel jLbBereich = new JLabel();
private JButton jBtZufall = new JButton();
private JButton jBtBubble1 = new JButton();
private JButton jBtBubble2 = new JButton();
private JButton jBtMin = new JButton();
private JButton jBtMaxS = new JButton();
private JButton jBtEinS = new JButton();
private JButton jBtShaker1 = new JButton();
private JButton jBtMehr = new JButton();
private JScrollPane jScrollPane1 = new JScrollPane();
private JTextArea jTaAusgabe = new JTextArea("");
private JButton jBtZeigen = new JButton();
private JTextField jTfGesucht = new JTextField();
private JButton jBtSeqSuche = new JButton();
private JButton jBtBinSuch = new JButton();
private JButton jBtBubbleRek = new JButton();
private JButton jBtQuick = new JButton();
private JButton jBtSuche1rek = new JButton();
private JButton jBtbinSucheRek = new JButton();
private JLabel jLabel1 = new JLabel();
private JLabel jLabel2 = new JLabel();
private JLabel jLabel3 = new JLabel();
// Ende Attribute
public Sort_2012_Oberflaeche (String title) {
super (title);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
int frameWidth = 546;
int frameHeight = 447;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
Container cp = getContentPane();
cp.setLayout(null);
// Anfang Komponenten
jLbTitel.setBounds(8, 8, 361, 24);
jLbTitel.setText("Sortier- u. Such-Demo mit Komma-Zahlen");
jLbTitel.setFont(new Font("MS Sans Serif", Font.PLAIN, 17));
cp.add(jLbTitel);
jLbAnzahl.setBounds(32, 48, 63, 16);
jLbAnzahl.setText("Anzahl = ");
jLbAnzahl.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
cp.add(jLbAnzahl);
jTfAnzahl.setBounds(96, 40, 49, 24);
jTfAnzahl.setText("15");
cp.add(jTfAnzahl);
jLbBereich.setBounds(160, 48, 52, 16);
jLbBereich.setText("(0..200)");
jLbBereich.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
cp.add(jLbBereich);
jBtZufall.setBounds(224, 40, 193, 25);
jBtZufall.setText("Zahlen zufällig erzeugen");
jBtZufall.setMargin(new Insets(2, 2, 2, 2));
jBtZufall.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtZufall_ActionPerformed(evt);
}
});
cp.add(jBtZufall);
jBtBubble1.setBounds(16, 88, 89, 25);
jBtBubble1.setText("Bubble1");
jBtBubble1.setMargin(new Insets(2, 2, 2, 2));
jBtBubble1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtBubble1_ActionPerformed(evt);
}
});
cp.add(jBtBubble1);
jBtBubble2.setBounds(120, 88, 89, 25);
jBtBubble2.setText("Bubble2");
jBtBubble2.setMargin(new Insets(2, 2, 2, 2));
jBtBubble2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtBubble2_ActionPerformed(evt);
}
});
cp.add(jBtBubble2);
jBtMin.setBounds(224, 88, 89, 25);
jBtMin.setText("MinSort");
jBtMin.setMargin(new Insets(2, 2, 2, 2));
jBtMin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtMin_ActionPerformed(evt);
}
});
cp.add(jBtMin);
jBtMaxS.setBounds(328, 88, 89, 25);
jBtMaxS.setText("MaxSort");
jBtMaxS.setMargin(new Insets(2, 2, 2, 2));
jBtMaxS.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtMaxS_ActionPerformed(evt);
}
});
cp.add(jBtMaxS);
jBtEinS.setBounds(432, 88, 89, 25);
jBtEinS.setText("EinSort");
jBtEinS.setMargin(new Insets(2, 2, 2, 2));
jBtEinS.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtEinS_ActionPerformed(evt);
}
});
cp.add(jBtEinS);
jBtShaker1.setBounds(120, 120, 89, 25);
jBtShaker1.setText("Shaker1");
jBtShaker1.setMargin(new Insets(2, 2, 2, 2));
jBtShaker1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtShaker1_ActionPerformed(evt);
}
});
cp.add(jBtShaker1);
jBtMehr.setBounds(224, 120, 89, 25);
jBtMehr.setText("...");
jBtMehr.setMargin(new Insets(2, 2, 2, 2));
jBtMehr.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtMehr_ActionPerformed(evt);
}
});
cp.add(jBtMehr);
jScrollPane1.setBounds(16, 160, 505, 185);
cp.add(jScrollPane1);
jTaAusgabe.setBounds(-2, -2, 505, 185);
jTaAusgabe.setText("Bitte zunächst Zahlen zufällig erzeugen -- danach suchen oder sortieren!\nAlle Sortierverfahren sortieren immer die anfangs/zuletzt zufällig erzeugten Zahlen, die auch \nmit [Zeigen] abgerufen und wiederhergestellt werden können. Die Suchen arbeiten \nhingegen mit den zuletzt angezeigten Zahlen (d.h. nach [Zeigen] wird in den unsortierten,\nnach einem Sortiervorgang jedoch in den sortierten Zahlen gesucht).\n\nAusführliche Erläuterungen auf https://www.r-krell.de/if-java-c.htm\n ");
jTaAusgabe.setLineWrap(false);
jScrollPane1.setViewportView(jTaAusgabe);
jTaAusgabe.setEditable(false);
jBtZeigen.setBounds(432, 40, 89, 25);
jBtZeigen.setText("Zeigen");
jBtZeigen.setMargin(new Insets(2, 2, 2, 2));
jBtZeigen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtZeigen_ActionPerformed(evt);
}
});
cp.add(jBtZeigen);
jTfGesucht.setBounds(32, 360, 73, 24);
jTfGesucht.setText("0.0");
jTfGesucht.setSelectionEnd(0);
cp.add(jTfGesucht);
jBtSeqSuche.setBounds(120, 360, 89, 25);
jBtSeqSuche.setText("Suche");
jBtSeqSuche.setMargin(new Insets(2, 2, 2, 2));
jBtSeqSuche.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtSeqSuche_ActionPerformed(evt);
}
});
cp.add(jBtSeqSuche);
jBtBinSuch.setBounds(328, 360, 89, 25);
jBtBinSuch.setText("bin. Suche");
jBtBinSuch.setMargin(new Insets(2, 2, 2, 2));
jBtBinSuch.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtBinSuch_ActionPerformed(evt);
}
});
cp.add(jBtBinSuch);
jBtBubbleRek.setBounds(16, 120, 89, 25);
jBtBubbleRek.setText("rek Bubble");
jBtBubbleRek.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtBubbleRek_ActionPerformed(evt);
}
});
cp.add(jBtBubbleRek);
jBtQuick.setBounds(328, 120, 89, 25);
jBtQuick.setText("Quick");
jBtQuick.setMargin(new Insets(2, 2, 2, 2));
jBtQuick.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtQuick_ActionPerformed(evt);
}
});
cp.add(jBtQuick);
jBtSuche1rek.setBounds(224, 360, 89, 25);
jBtSuche1rek.setText("Suche rek");
jBtSuche1rek.setMargin(new Insets(2, 2, 2, 2));
jBtSuche1rek.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtSuche1rek_ActionPerformed(evt);
}
});
cp.add(jBtSuche1rek);
jBtbinSucheRek.setBounds(432, 360, 89, 25);
jBtbinSucheRek.setText("bin. S. rek");
jBtbinSucheRek.setMargin(new Insets(2, 2, 2, 2));
jBtbinSucheRek.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtbinSucheRek_ActionPerformed(evt);
}
});
cp.add(jBtbinSucheRek);
jLabel1.setBounds(16, 368, 17, 16);
jLabel1.setText("?");
jLabel1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
cp.add(jLabel1);
jLabel2.setBounds(328, 384, 204, 16);
jLabel2.setText("[ bin. Suche nur in sort. Reihung! ]");
jLabel2.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
cp.add(jLabel2);
jLabel3.setBounds(24, 384, 94, 16);
jLabel3.setText("gesuchte Zahl");
jLabel3.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
cp.add(jLabel3);
addWindowListener(new WindowAdapter() {
public void windowOpened(WindowEvent evt) {
Sort_2012_Oberflaeche_WindowOpened(evt);
}
});
// Ende Komponenten
setResizable(false);
setVisible(true);
}
// Anfang Methoden
public void jBtZufall_ActionPerformed(ActionEvent evt) {
int anz = Integer.parseInt (jTfAnzahl.getText());
sortierdemo.fülleZufällig(anz);
sortierdemo.sichern();
jTaAusgabe.append("\n"+sortierdemo.zeigeAlle()+" <- zufällig erzeugt\n");
}
public void jBtZeigen_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- Kontroll-Anzeige\n");
}
public void jBtBubble1_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
sortierdemo.bubbleSort();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- nach BubbleSort\n");
}
public void jBtBubble2_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
sortierdemo.bubbleSort2();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- nach opt. BubbleSort\n");
}
public void jBtMin_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
sortierdemo.minSort();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- nach MinSort\n");
}
public void jBtMaxS_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
sortierdemo.maxSort();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- nach MaxSort\n");
}
public void jBtEinS_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
sortierdemo.einSort();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- nach EinSort\n");
}
public void jBtBubbleRek_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
sortierdemo.bubbleSortR();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- nach rek. BubbleSort\n");
}
public void jBtShaker1_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
sortierdemo.shakerSort();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- nach ShakerSort\n");
}
public void jBtMehr_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
jTaAusgabe.append("Weitere Verfahren noch nicht implementiert\n");
}
public void jBtQuick_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
sortierdemo.quickSort();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- nach rek. QuickSort\n");
}
private String suchergebnis (int stelle, double gesucht)
{
if (stelle < 0)
{
return ("Zahl "+gesucht+" nicht gefunden\n");
}
else
{
return ("Zahl "+gesucht+" an der Stelle "+ stelle+" (d.h. in reihe["+stelle+"]) gefunden\n");
}
}
public void jBtSeqSuche_ActionPerformed(ActionEvent evt) {
double gesucht = Double.parseDouble(jTfGesucht.getText());
int fundStelle = sortierdemo.suche1(gesucht);
jTaAusgabe.append(suchergebnis(fundStelle,gesucht));
}
public void jBtSuche1rek_ActionPerformed(ActionEvent evt) {
double gesucht = Double.parseDouble(jTfGesucht.getText());
int fundStelle = sortierdemo.suche1r(gesucht);
jTaAusgabe.append(suchergebnis(fundStelle,gesucht));
}
public void jBtBinSuch_ActionPerformed(ActionEvent evt) {
double gesucht = Double.parseDouble(jTfGesucht.getText());
int fundStelle = sortierdemo.suche2(gesucht);
jTaAusgabe.append(suchergebnis(fundStelle,gesucht));
}
public void jBtbinSucheRek_ActionPerformed(ActionEvent evt) {
double gesucht = Double.parseDouble(jTfGesucht.getText());
int fundStelle = sortierdemo.suche2r(gesucht);
jTaAusgabe.append(suchergebnis(fundStelle,gesucht));
}
public void Sort_2012_Oberflaeche_WindowOpened(WindowEvent evt) {
// TODO hier Quelltext einfügen
}
// Ende Methoden
// public static void main(String[] args) {
// new Sort_2012_Oberflaeche("Sort_2012");
// }
}
-------------------------------------------------------------
public class Sort_2012_Start extends javax.swing.JApplet
// R. Krell, 16.12.12012 für www.r-krell.de bzw. www.r-krell.de/if-java-c.htm
// Startet das Programm zum Sortieren und Suchen von Kommazahlen je nach Umgebung automatisch als
// Application oder als Applet
{
public static void main (String[] s) // Start als Application
{
Sort_2012_Oberflaeche gui = new Sort_2012_Oberflaeche("Sort_2012 (www.r-krell.de) -- als Application");
}
public void init() // Start als Applet
(nicht mehr möglich)
{
Sort_2012_Oberflaeche gui = new Sort_2012_Oberflaeche("Sort_2012 (www.r-krell.de) -- als Applet");
}
}
zurück zur
Seite „Informatik mit Java, Teil c)"