Zunächst möchte ich sagen, dass dies eine Schulaufgabe ist und ich nur für eine Anleitung suche.Verwenden von `Quick-Look`, um bestimmte Element zu finden
Meine Aufgabe war es, einen Algorithmus zu schreiben, der das k: kleinste Element in einem Seq mit Quickselect findet. Das sollte einfach sein, aber wenn ich ein paar Tests mache, treffe ich eine Wand. Aus irgendeinem Grund, wenn ich den Eingang (List(1, 1, 1, 1), 1)
verwende, geht es in die Endlosschleife.
Hier ist meine Implementierung:
val rand = new scala.util.Random()
def find(seq: Seq[Int], k: Int): Int = {
require(0 <= k && k < seq.length)
val a: Array[Int] = seq.toArray[Int] // Can't modify the argument sequence
val pivot = rand.nextInt(a.length)
val (low, high) = a.partition(_ < a(pivot))
if (low.length == k) a(pivot)
else if (low.length < k) find(high, k - low.length)
else find(low, k)
}
Aus irgendeinem Grund (oder weil ich müde bin) Ich kann nicht mein Fehler erkennen. Wenn mir jemand sagen könnte, wo ich falsch liege, würde ich mich freuen.
Gehen Sie in einem Debugger durch. Aber ein Hinweis "a.partition (_
ohh, natürlich. Ich danke dir sehr – Duzzz