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.

Funktion HoleSonnenstunden()

Empfohlene Antworten

Veröffentlicht

Hallo,

kann mir jemand sagen ob diese Funktion im Pseudocode so richtig ist?

holeSonnenstunden(plz)


ergebnis = -1


for i = 0 to Sonnenstunden.Length - 1

	WENN Sonnenstunden[i][0] = PLZ

		erg1 = Sonnenstunden[i][1]

	SONST

		WENN Sonnenstunden[i][0] < PLZ

			erg1 = Sonnenstunden[i][1]

		ENDE WENN

	ENDE WENN

Next i

Rückgabe ergebnis


		 

post-79268-14430449228462_thumb.png

  • Autor

Ja okay das stimmt. Ich frage mich jetzt gerade nur ob ich wirklich auf das richtige Ergebnis zum Schluss komme.

Edit: Ja müsste dann das richtige Ergebnis geben, ich habe es gerade nochmal auf einem Zettel getestet.

Bearbeitet von Schnittcher

Offtopic:

Wäre es nicht effizienter, da die Daten ja schon schön vorsortiert sind, so vorzugehen:


Hole Sonnenstunden(PLZ):

  return Suche(PLZ, Sonnenstunden);



Suche(PLZ, Sonnenstunden):

  Hat Sonnenstunden mehr als 3 Elemente

   dann Teile die Liste in zwei Hälften

        Vergleiche PLZ mit dem Pivotelement (Sonnenstunden[n/2]) in der Mitte.

        Ist PLZ größer bilde eine Teilliste mit dem Teil Sonnenstunden[n/2] bis Sonnenstunden[n] und suche da mit Suche(PLZ, Teilliste) weiter

        Ist die PLZ kleiner bilde eine Teilliste mit dem Teil Sonnenstunden[0] bis Sonnenstunden[n/2] und suche da mit Suche(PLZ, Teilliste) weiter.

  Sonst vergleiche PLZ mit Sonnenstunden[2]

   Wenn Sonnenstunden[2]=PLZ return Sonnenstunden[2][1]

   Sonst return Sonnenstunden[1][1]


Geht, glaub ich ein bissel schneller... ;)

Bearbeitet von lilith2k3

  • Autor

Aber für die Prüfung müsste meine Lösung doch reichen oder?

Und zu deiner Lösung...

Muss man die denn wirklich in unterschiedliche Listen teilen?

Könnet man nicht direkt über den Index gehen?

Also Länge des Arrays -1 und dann durch 2 dann bin ich auch bei der Hälfte dann prüfen und dann wieder durch 2 bis man den Wert rausbekommt?

Aber für die Prüfung müsste meine Lösung doch reichen oder?
Deine Lösung erfüllt die Aufgabestellung.

Also Länge des Arrays -1 und dann durch 2 dann bin ich auch bei der Hälfte dann prüfen und dann wieder durch 2 bis man den Wert rausbekommt?
Genau. Nennt sich binäre Suche und funktioniert bei sortierten Feldern. Ist effizienter als die lineare Suche, die du implementiert hast. In einer Prüfungssituation würde ich allerdings immer den einfachen Algorithmus dem effizienten vorziehen. Eine lineare Suche ist sicher einfacher und schneller fehlerfrei zu Papier zu bringen als eine binäre.
  • Autor

Genau. Nennt sich binäre Suche und funktioniert bei sortierten Feldern. Ist effizienter als die lineare Suche, die du implementiert hast. In einer Prüfungssituation würde ich allerdings immer den einfachen Algorithmus dem effizienten vorziehen. Eine lineare Suche ist sicher einfacher und schneller fehlerfrei zu Papier zu bringen als eine binäre.

Das sehe ich auch so und in der Praxis würde ich es auch testen bzw., debuggen und so evtl. Fehler zu finden. Auf dem Papier geht das ja auch nicht!

Muss man die denn wirklich in unterschiedliche Listen teilen?

Könnet man nicht direkt über den Index gehen?

Nein. Da hast Du recht.

Allerdings würde ich das realiter unter C mit Pointern lösen, das wäre dann schnell genug ^^

In einer Prüfungssituation würde ich allerdings immer den einfachen Algorithmus dem effizienten vorziehen. Eine lineare Suche ist sicher einfacher und schneller fehlerfrei zu Papier zu bringen als eine binäre.

Stimmt :]

Vorallem, wenn man den Code runterschreiben kann; das andere kostet ggf. zuviel Zeit.

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.