Ich werde das Problem schreiben, wie ich es gefunden habe und ich werde dann erklären, was mich verwirrt.Gegeben ein Array, finde top 'x' in O (1)
"Ein Lehrer markiert die Arbeit seiner Schüler von 0-10, aber er markiert nur mit einer 8 oder darüber für eine bestimmte Zahl" x "(x = 15) der" n "Schüler ein Array mit allen Schülern in zufälliger Reihenfolge. Finde die 'x' besten Noten in O (1). "
Wir haben sicherlich gelernt Hashing, aber das erfordert mich alle Daten in einer Hash-Tabelle zu speichern, die definitiv nicht O (1) ist. Vielleicht müssen wir die "Umwandlung" nicht berücksichtigen? Wenn wir das tun, wird die Umrechnung, kombiniert mit der Suchzeit danach, zu einer anderen Methode als Hashing führen.
In diesem Fall, abgesehen von O (1), was ist der schnellste Algorithmus einschließlich der Umwandlung und der Suchzeit?
Ist nicht das Array selbst die Lösung? :) Es enthält die x besten Marken, weil es x Marken enthält :) –
Wenn es nur ein unsortiertes Array ist, müssen Sie lineare Suche durchführen – alejandrogiron
Wäre es dann nicht O (n)? Sowohl x als auch n sind zufällig, wenn Sie n ändern, dauert es länger. –