2013-03-14 8 views
5

Ein Array von n Zahlen gegeben ist, wobei n eine gerade Zahl ist. Das Maximum sowie das Minimum dieser n Zahlen müssen bestimmt werden. Ich brauche die erforderlichen Vergleiche?Maxima und Minima eines Arrays

+0

Hinweis: 3 * n/2-2 Vergleiche sind genug . – Henrik

+0

@Henrik können Sie bitte erarbeiten – user2170497

Antwort

3

Es kann in O (n) Zeit getan werden.

Sie können diese link für

Referenz Besuche
+0

Sie scherzen richtig? Mit naiven Ansatz kann es in O (N) –

+0

@IvayloStrandjev getan werden: - Bitte korrigieren Sie mich, wenn ich falsch liege, aber ich habe es ein 2D-Array betrachtet. Also ist es in 2D-Array auch möglich, d. H. O (n) Zeit? –

+0

'Ein Array von n Zahlen ist gegeben, wobei n eine gerade Zahl ist. Das Maximum sowie das Minimum dieser n Zahlen müssen bestimmt werden. Ich sehe hier keine Angabe von 2D. OP bittet um eine Möglichkeit, die minimale und maximale Anzahl von n Zahlen mit einer minimalen Anzahl von Vergleichen zu finden –

4

Es kann mit 3*n/2-2 Vergleiche durchgeführt werden.

Für n == 2, vergleichen Sie einfach die beiden Zahlen. Angenommen, wir haben Minimum und Maximum für die ersten Nummern. Vergleichen Sie die verbleibenden zwei Zahlen und vergleichen Sie dann das größere mit dem vorherigen Maximum und das kleinere mit dem vorherigen Minimum.

1

Für ein unsortiertes Array kann in etwa 1.5n Vergleiche durchgeführt werden. Sie können dies tun, indem Sie Paare von Elementen eines Arrays vergleichen und das min und das lokale max speichern. Sie haben n/2 Vergleiche gemacht, um (lokale) max zu finden und n/2 um die min. Somit ist in dieser Phase insgesamt n.

Jetzt gehen Sie über die max und min Einheimische und finden Sie die globale max und min. Dies würde auch n/2 Vergleiche erfordern. So n + n/2 = 1.5n.

Wenn das Array sortiert ist, können Sie es ohne Vergleiche finden, da die niedrigste Zahl auf Position 0 und der höchste auf der Position N - 1.