0 Daumen
283 Aufrufe

kann mir jemand bitte mit der Aufgabe helfen.

Aufgabe:

Beschreiben Sie einen Algorithmus min2 in Pseudocode, der den zweitkleinsten Wert zurückgibt, der in einer Liste a[1...n]

von n ≥ 1 Zahlen vorkommt. So soll zum Beispiel min2 [1, 11, 4, 1, 6, 4] den Wert 4 zurückgeben. Wenn alle Zahlen in a gleich sind, es also keinen zweitkleinsten Wert gibt, soll Ihr Algorithmus + ∞ zurückgeben.

Avatar von

1 Antwort

0 Daumen

+∞ in m1 und m2 speichern.

Über alle x aus der Liste iterieren:

  1. Falls x kleiner als m1 ist, m1 und m2 entsprechend anpassen.
  2. Ansonsten falls x größer als m1 und kleiner als m2 ist, m1 und m2 entsprechend anpassen.

Ergebnis ist m2.

Avatar von 5,6 k

verstehe ich nicht ganz.

meine Idee war

min2 (a[1...n])

for i <-- 1,..,n

 if a[ i] = zweitkleinster wert

  return zweitkleinster wert

else if a[I] ≠ zweitkleinster wert
    return + ∞

verstehe ich nicht ganz.

Welche Fragen hast du zu meinem Pseudocode?

if a[ i] = zweitkleinster wert

Der Variablen zweitkleinster wert wird nirgendwo ein Wert zugewiesen.

Der Schleifenrumpf wird nur ein einziges mal durchlaufen, weil du im ersten Durchlauf den Algorithmus auf jeden Fall mittels return beendest.

Ich weiß nicht wie ich es in einem Code umsetzen soll was du geschrieben hast.

Und wie weise ich der variable ein Wert zu und muss dann Return weglassen und am Ende neben Return + unendlich schreiben?

Ich weiß nicht wie ich es in einem Code umsetzen soll was du geschrieben hast.

Lies dir noch mal die Dokumentation zu deiner Variante von Pseudocode durch. Da sollte für jede der fünf Zeilen eine passende Anweisung drin sein.

Und wie weise ich der variable ein Wert zu

Lies dir noch mal die Dokumentation zu deiner Variante von Pseudocode durch. Da sollte stehen, wie einer Variable ein Wert zugewiesen wird.

und muss dann Return weglassen und am Ende neben Return + unendlich schreiben?

Du musst dir erst ein mal darüber Gedanken machen, wie du aus den drei Bestandteilen

  • Einer Variable einen Wert zuweisen
  • Einen Block von Anweisungen mehrmals ausführen
  • Einen Block von Anweisungen ausführen falls eine Bedingung erfüllt ist

das Problem löst, das zweitkleinste Element einer Liste zu finden.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community