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

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)"



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 Applet-Version und Webstart inzwischen wegen Sicherheitsbedenken seit 2017 bzw. 2020 nicht mehr unterstützt und daher nicht mehr benötigt werden: vgl. auch 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 https://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 (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)"



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 https://www.r-krell.de.