Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben (bearbeitet)

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
Geschrieben (bearbeitet)

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
Geschrieben

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?

Geschrieben
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.
Geschrieben

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!

Geschrieben
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.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...