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


Sortieren und Suchen

Nach dem Webstart erscheint in einem eigenen Fenster
das Programm Sort_2012 mit verschiedenen Sortier- und Suchverfahren:

Die Bedienung erfolgt durch die Schaltflächen.
Gesuchte Kommazahlen bitte mit Punkt statt Komma eingeben.
Die binäre Suche ([bin. Suche] bzw. [bin. S. rek.])
funktioniert nur korrekt, wenn vorher schon sortiert wurde.



Wenn die Java-JRE installiert ist, können Sie das Programm jetzt sofort ausführen:

Hier klicken zum Webstart der Sortier- & Such-Demo

Danach Öffnen von Sortieren-Suchen.jnlp [mit Java(TM) Webstart Launcher (Standard)] wählen/bestätigen
und bei evtl. Sicherheitswarnung vor der Ausführung von Sort_2012_Start das Risiko akzeptieren und OK drücken.

Wenn Sie außerdem gefragt werden, ob Sie eine Desktop- und eine Startmenüverknüpfung anlegen wollen,
sollten Sie zustimmen, wenn Sie das Programm auch nach Verlassen dieser Webseite nochmal ausprobieren wollen.

Wird nach dem Klick Sortieren-Suchen.jnlp herunter geladen oder werden Sie gefragt, womit Sie Sortieren-Suchen.jnlp öffnen wollen
oder ob/wohin Sie die Datei speichern wollen, haben Sie entweder kein Java installiert oder ihr Browser (z.B. Opera) unterstützt keinen Webstart.
Im letzten Fall empfiehlt sich nachfolgend der Download der .jar-Datei:

Sie können die Sortier- und Such-Demo auch als ausführbare Java-Datei Sortieren&Suchen(r-krell.de).jar (21 kB) herunter laden und später lokal auf Ihrem Rechner starten (Java-Umgebung JRE vorausgesetzt). Die Ausführung als Applet im Browser wird von mir hingegen nicht mehr angeboten: Gründe, Abhilfe und alle 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 .jnlp-Datei wird nur für den Webstart benötigt.

zurück zur Seite „Informatik mit Java, Teil c)"



Während der Quelltext der Klasse Sort_2012, in der die Reihung und die Sortier- und Suchverfahren enthalten sind, bereits vollständig auf der Seite c) angegeben ist, war die weitgehend automatisch erzeugte Oberflächenklasse dort nur angedeutet worden. Der Quelltext von Sort_2012_Oberflaeche ist daher vollständig nachfolgend aufgelistet. Außerdem gibt's im Anschluss die Startdatei, die das Programm wahlweise als Applet oder Application laufen lässt (wobei die Applet-Version inzwischen der Webstart-Variante weichen sollte: vgl. Startdatei unten beim Autorennen, erreichbar über meine Seite Informatik mit Java, Teil b))

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(8836124);
    jLbTitel.setText(
"Sortier- u. Such-Demo mit Komma-Zahlen");
    jLbTitel.setFont(
new Font("MS Sans Serif", Font.PLAIN, 17));
    cp.add(jLbTitel);
    jLbAnzahl.setBounds(
32486316);
    jLbAnzahl.setText(
"Anzahl = ");
    jLbAnzahl.setFont(
new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jLbAnzahl);
    jTfAnzahl.setBounds(
96404924);
    jTfAnzahl.setText(
"15");
    cp.add(jTfAnzahl);
    jLbBereich.setBounds(
160485216);
    jLbBereich.setText(
"(0..200)");
    jLbBereich.setFont(
new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jLbBereich);
    jBtZufall.setBounds(
2244019325);
    jBtZufall.setText(
"Zahlen zufällig erzeugen");
    jBtZufall.setMargin(
new Insets(2222));
    jBtZufall.addActionListener(
new ActionListener() {
      
public void actionPerformed(ActionEvent evt) {
        jBtZufall_ActionPerformed(evt);
      }
    });
    cp.add(jBtZufall);
    jBtBubble1.setBounds(
16888925);
    jBtBubble1.setText(
"Bubble1");
    jBtBubble1.setMargin(
new Insets(2222));
    jBtBubble1.addActionListener(
new ActionListener() {
      
public void actionPerformed(ActionEvent evt) {
        jBtBubble1_ActionPerformed(evt);
      }
    });
    cp.add(jBtBubble1);
    jBtBubble2.setBounds(
120888925);
    jBtBubble2.setText(
"Bubble2");
    jBtBubble2.setMargin(
new Insets(2222));
    jBtBubble2.addActionListener(
new ActionListener() {
      
public void actionPerformed(ActionEvent evt) {
        jBtBubble2_ActionPerformed(evt);
      }
    });
    cp.add(jBtBubble2);
    jBtMin.setBounds(
224888925);
    jBtMin.setText(
"MinSort");
    jBtMin.setMargin(
new Insets(2222));
    jBtMin.addActionListener(
new ActionListener() {
      
public void actionPerformed(ActionEvent evt) {
        jBtMin_ActionPerformed(evt);
      }
    });
    cp.add(jBtMin);
    jBtMaxS.setBounds(
328888925);
    jBtMaxS.setText(
"MaxSort");
    jBtMaxS.setMargin(
new Insets(2222));
    jBtMaxS.addActionListener(
new ActionListener() {
      
public void actionPerformed(ActionEvent evt) {
        jBtMaxS_ActionPerformed(evt);
      }
    });
    cp.add(jBtMaxS);
    jBtEinS.setBounds(
432888925);
    jBtEinS.setText(
"EinSort");
    jBtEinS.setMargin(
new Insets(2222));
    jBtEinS.addActionListener(
new ActionListener() {
      
public void actionPerformed(ActionEvent evt) {
        jBtEinS_ActionPerformed(evt);
      }
    });
    cp.add(jBtEinS);
    jBtShaker1.setBounds(
1201208925);
    jBtShaker1.setText(
"Shaker1");
    jBtShaker1.setMargin(
new Insets(2222));
    jBtShaker1.addActionListener(
new ActionListener() {
      
public void actionPerformed(ActionEvent evt) {
        jBtShaker1_ActionPerformed(evt);
      }
    });
    cp.add(jBtShaker1);
    jBtMehr.setBounds(
2241208925);
    jBtMehr.setText(
"...");
    jBtMehr.setMargin(
new Insets(2222));
    jBtMehr.addActionListener(
new ActionListener() {
      
public void actionPerformed(ActionEvent evt) {
        jBtMehr_ActionPerformed(evt);
      }
    });
    cp.add(jBtMehr);
    jScrollPane1.setBounds(
16160505185);
    cp.add(jScrollPane1);
    jTaAusgabe.setBounds(-
2, -2505185);
    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 http://www.r-krell.de/if-java-c.htm\n ");
    jTaAusgabe.setLineWrap(
false);
    jScrollPane1.setViewportView(jTaAusgabe);
    jTaAusgabe.setEditable(
false);
    jBtZeigen.setBounds(
432408925);
    jBtZeigen.setText(
"Zeigen");
    jBtZeigen.setMargin(
new Insets(2222));
    jBtZeigen.addActionListener(
new ActionListener() {
      
public void actionPerformed(ActionEvent evt) {
        jBtZeigen_ActionPerformed(evt);
      }
    });
    cp.add(jBtZeigen);
    jTfGesucht.setBounds(
323607324);
    jTfGesucht.setText(
"0.0");
    jTfGesucht.setSelectionEnd(
0);
    cp.add(jTfGesucht);
    jBtSeqSuche.setBounds(
1203608925);
    jBtSeqSuche.setText(
"Suche");
    jBtSeqSuche.setMargin(
new Insets(2222));
    jBtSeqSuche.addActionListener(
new ActionListener() {
      
public void actionPerformed(ActionEvent evt) {
        jBtSeqSuche_ActionPerformed(evt);
      }
    });
    cp.add(jBtSeqSuche);
    jBtBinSuch.setBounds(
3283608925);
    jBtBinSuch.setText(
"bin. Suche");
    jBtBinSuch.setMargin(
new Insets(2222));
    jBtBinSuch.addActionListener(
new ActionListener() {
      
public void actionPerformed(ActionEvent evt) {
        jBtBinSuch_ActionPerformed(evt);
      }
    });
    cp.add(jBtBinSuch);
    jBtBubbleRek.setBounds(
161208925);
    jBtBubbleRek.setText(
"rek Bubble");
    jBtBubbleRek.addActionListener(
new ActionListener() {
      
public void actionPerformed(ActionEvent evt) {
        jBtBubbleRek_ActionPerformed(evt);
      }
    });
    cp.add(jBtBubbleRek);
    jBtQuick.setBounds(
3281208925);
    jBtQuick.setText(
"Quick");
    jBtQuick.setMargin(
new Insets(2222));
    jBtQuick.addActionListener(
new ActionListener() {
      
public void actionPerformed(ActionEvent evt) {
        jBtQuick_ActionPerformed(evt);
      }
    });
    cp.add(jBtQuick);
    jBtSuche1rek.setBounds(
2243608925);
    jBtSuche1rek.setText(
"Suche rek");
    jBtSuche1rek.setMargin(
new Insets(2222));
    jBtSuche1rek.addActionListener(
new ActionListener() {
      
public void actionPerformed(ActionEvent evt) {
        jBtSuche1rek_ActionPerformed(evt);
      }
    });
    cp.add(jBtSuche1rek);
    jBtbinSucheRek.setBounds(
4323608925);
    jBtbinSucheRek.setText(
"bin. S. rek");
    jBtbinSucheRek.setMargin(
new Insets(2222));
    jBtbinSucheRek.addActionListener(
new ActionListener() {
      
public void actionPerformed(ActionEvent evt) {
        jBtbinSucheRek_ActionPerformed(evt);
      }
    });
    cp.add(jBtbinSucheRek);
    jLabel1.setBounds(
163681716);
    jLabel1.setText(
"?");
    jLabel1.setFont(
new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jLabel1);
    jLabel2.setBounds(
32838420416);
    jLabel2.setText(
"[ bin. Suche nur in sort. Reihung! ]");
    jLabel2.setFont(
new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jLabel2);
    jLabel3.setBounds(
243849416);
    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
  {
    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)"



zum Anfang dieser Seite
Willkommen/Übersicht   -   Was ist neu?   -   Software   -   Mathematik   -   Physik   -   Informatik   -   Schule: Lessing-Gymnasium und -Berufskolleg   -   Fotovoltaik   -   & mehr   -   Kontakt: e-Mail,  News-Abo, Gästebuch, Impressum   -   Grußkarten, site map, Download und Suche

Diese Seite ist Teil des Webangebots http://www.r-krell.de. Sie können diese Seite per e-Mail weiter empfehlen (tell a friend).