python 3.2 - finden die zweite kleinsten Zahl in einer Liste mit Rekursion

So, ich muss die zweite kleinste Zahl innerhalb einer Liste von Ganzzahlen, die Verwendung von Rekursion, aber ich kann nicht für das Leben von mir erarbeiten einen Weg, es zu tun. Ich kann es tun, mit zu finden die kleinste Zahl mit dieser:

def smallest(int_list):

    if(len(int_list) == 1):
        return int_list[0]
    else:
        a = smallest(int_list[1:])
        b = int_list[0]

        if(a <= b):
            return a
        else:
            return b

Kann jemand mich in die richtige Richtung?

  • Erstellen Sie 2 Funktionen, eine, die findet die kleinsten und eine, die versucht zu finden, die nächste kleinste angesichts der Rückgabewert der ersten Funktion
  • Anstatt nur die kleinsten, versuchen, Rückgabe eines Tupels enthält die kleinste und zweitkleinste der Teil der Liste, die Sie bearbeitet habe, so weit. Halten Sie die Aktualisierung der Tupel bei jedem Schritt.
  • en.wikipedia.org/wiki/Quickselect beschreibt die Sache ziemlich gut.
  • überprüfen Sie meine Antwort, die ich umgesetzt so etwas wie @shridharama vorgeschlagen.
  • Eine Sache ist nicht sehr klar, Sie wollen zurück 2. kleinste auch Elemente, sind doppelte wie zurück 1 im [1,1,2,3]? Oder Sie wollen 2?
InformationsquelleAutor qND | 2015-01-26
Schreibe einen Kommentar