zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Nein... aber wir sollten wissen, dass es die binäre Suche gibt, falls wir sie in einer großen Anwendung brauchen. Bei großen Datenmengen ist die binäre Suche um ein Vielfaches schneller als die lineare Suche.


Mini Wörterbuch

import java.util.Arrays;
import java.util.Scanner;

class TinyDictionary
{

  public static void main(String[] args)
  {
    Entry[] wordList = new Entry[10];

    wordList[0] = new Entry("WWW", "World Wide Web");
    wordList[1] = new Entry("HTTP","Hypertext Transport Protocol");
    wordList[2] = new Entry("DNS", "Domain Name System");
    wordList[3] = new Entry("AWT", "Application Windowing Toolkit");
    wordList[4] = new Entry("CPU", "Central Processing Unit");
    wordList[5] = new Entry("RAM", "Random Access Memory");
    wordList[6] = new Entry("URL", "Uniform Resource Locator");
    wordList[7] = new Entry("GUI", "Graphical User Interface");
    wordList[8] = new Entry("API", "Application Programming Interface");
    wordList[9] = new Entry("ROM", "Read-only Memory");

    Arrays.sort(wordList);

    Scanner scan = new Scanner(System.in);
    String key = "";
    int location;

    System.out.print("Word: ");
    key = scan.next();

    while (!key.equals("quit") && !key.equals("q"))
    {
      location = Arrays.binarySearch(wordList, new Entry(key, ""));

      if ( location < 0 )
        System.out.println("Not in the dictionary");
      else
        System.out.println( wordList[location]  );

      System.out.print("Word: ");
      key = scan.next();
    }

  }

}

Das Programm implementiert ein winziges Wörterbuch. Der Benutzer gibt ein Wort ein, das Programm schlägt das Wort nach und gibt das Wort und seine Definition aus. Mit ein wenig Arbeit könnte dieses Programm in eine fast praktische Anwendung umgewandelt werden.

Die binäre Suchmethode ist eine Klassenmethode der Klasse Arrays, so dass sie mit Arrays.binarySearch() aufgerufen wird, da ein Arrays-Objekt nicht benötigt wird.

Die Parameter sind eine sortierte Liste von Entry-Objekten und ein Entry-Objekt, das als Schlüssel für die Suche dient. Der Schlüssel wird aus dem vom Benutzer eingegebenen Wort und einem Leerstring für die Definition gebildet:

new Entry( key, "" )

Da die Methode compareTo() nicht die Definition betrachtet wird das gut funktionieren. Hier ist eine Ausgabe des Programms:

Word: URL
URL     Uniform Resource Locator
Word: WWW
WWW     World Wide Web
Word: quit

FRAGE 20:

Müssen alle Zellen des Arrays nicht-null sein, um Arrays.binarySearch() zu verwenden?

zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite