Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Telefonbuch

Empfohlene Antworten

Veröffentlicht

Beobachten Sie sich, wenn Sie in einer geordneten Folge, z.B. in einem Telefonbuch, nach einem Eintrag suchen. Formalisieren Sie Ihre Vorgehensweise und schreiben Sie einen Algorithmus. Analysieren Sie den Algorithmus hinsichtlich seiner Laufzeit.


type telefonbuch = record

                          ort = array [1..maxint] of char;

                          vorwahl = array [1..maxint] of byte;

                          name = array (1..maxint) of char;

                          vorname = array (1..maxint) of char;

                          straße = array (1..maxint) of char;

                          telefonnummer = array (1..maxint) of int;

                          end.

Ich würde jetzt mit 4 ineinander verketteten while schleifen, jeweils den nächsten ort (dann namen, dann vornamen, dann straße) wählen, solange der gegebene ort kleiner als der gesucht ort ist. denn char ist ein skalarer datentyp. das setzt voraus, dass man immer am anfang anfängt und nicht zwischendurch. dieses problem kann man ja mit 4 ineinander verketteten while schleifen lösen, die dann rückwärts laufen. jedenfalls hat man ja dann irgendwann den gesuchten eintrag mit der jeweiligen vorwahlnummer und telefonnummer. oder?

hinsichtlich der laufzeit ist mein algorithmus linear, denke ich.

Ups Sorry hatte die obenstehende Aufgabenstellung überlesen.

Aber wiso benötigst du 4 schleifen?

Denn wenn du den Ort hats bekommst du automatisch die Vorwahl.

Wenn du den Vor- und Nachnamen in Kombination mit der Straße und hausnummer hast bekommst du die Telefonnummer.

  • Autor

das ist richtig.

ich brauche aber eine schleife für den ort, eine für den namen, einen vor den vornamen und eine für die straße. = 4. bei der straße bin ich mir nicht so ganz sicher aber es kann ja sein, dass es zwei hugo müller in unterschiedlichen straßen gibt.

Ist die Frage, wie genau Du das machen sollst:

Wenn Du auch Dein Vorgehen beim alphabetischen Suchen beschreiben sollst, dann wird etwas komplexer, da Du ja (zumindest mache ich das so ;) ) eine Art Teilung machst. Der Ort München ist gesucht und Du schlägst das Telefonbuch bei "I" auf. Also gehst Du weiter nach hinten, usw.

Das selbe Schema verfolge ich bei dem Namen und den anderen Attributen.

Klingt für mich ein wenig nach binärer Suche .

Seit Ihr anderer Meinung?

  • Autor

binäre suche hört sich gut an, aber dann jeweils für den ort, name, vorname und straße, denke ich. oder kann man das ineinander schachteln?

das ist aber wieer abhängig davon, was für ein "telefonbuch-sucher" man ist. ich schlage das buch zB nicht immer in der mitte auf *gg*

die laufzeit wäre dann O(log n).

Ja, schachteln musst Du wohl, Da Du erst nach dem Namen suchen kannst, wenn Du den Ort kennst. Du kannst auch erst nach der Strasse suchen, wenn Du den Namen kennst.

Naja, wenn Du nicht direkt die Mitte nimmst, kann es ja Vorteile aber auch Nachteile haben, je nachdem, ob Du näher am Ziel bist oder nicht ;)

Em du brauchst doch die While schleife nur damit bei gefundenem Datensatz sofort abgebrochen wird oder? Dann kannst du es Theoretisch sogar mit einer Schleife lösen. Das zauberwort heist IF abfrage

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.