2017-02-22 4 views
0

Ich versuche eine Funktion zu schreiben, die eine Zahl als Eingabe nimmt und die vorherigen und nächsten Zahlen aus einer unsortierten Liste in sortierter Reihenfolge ausgibt. zB wenn die Liste [29,1,49,8] ist, sollte der Aufruf der Funktion (8) zurückkehren [1,29] Nur eine mögliche Lösung mit minimaler Komplexität ist Sortierung, gibt es andere Methoden, die weniger haben avg Komplexität? Die Liste wird nach dem Zufallsprinzip von einer festen Größe von 100Fnd sofortige große und kleine Zahl für eine Nummer aus einer unsortierten Liste ohne zu sortieren?

+0

Was ist, wenn keine Zahl kleiner als (oder größer als) der angeforderte Wert ist. Das heißt, wenn Ihre Liste "[29, 1, 49, 8]" ist und der Aufruf "Funktion (50)" ist? Gibt es mehr als einen Funktionsaufruf pro Liste? –

+0

Oh! Ich habe nicht einmal über dieses Szenario nachgedacht, dann müssen wir zuerst überprüfen, ob das Element existiert oder nicht und dann weitermachen, denke ich. Ich nehme an, dass es eine Funktion gibt, aber es könnte angerufen werden oder möglicherweise nicht in sich funktioniert. Irgendwelche Vorschläge Jim? –

Antwort

1

generiert keine Notwendigkeit zu sortieren. Gehen Sie einfach durch das Array und pflegen Sie best_delta_positive und best_delta_negative zusammen mit den Indizes, in denen sie gefunden wurden, falls erforderlich.

+0

Wird das funktionieren, wenn die Liste [29,22,65,8] ist, wo es kein Delta-Negativ gibt? .Die Liste wird zufällig generiert –

+0

Awesome!, Das wird in dieser Situation funktionieren. Danke Malcolm –

Verwandte Themen