Einfach "der maximale Wert in array" und Komplexität von Berechnungen

Ich bin ziemlich neu auf dieses Zeug und ich brauche deine Hilfe.

Ich sollte den Aufbau einer effizienten einfache Algorithmus gibt den maximalen Wert in einem array mit Größe n enthält die zahlen 1,2,...n mit Wiederholungen.

Dann habe ich bestimmt die beste Laufzeit, die Durchschnittliche Laufzeit und die schlechteste Laufzeit.

Also ich habe zwei Fragen:

  1. Zunächst bin ich versucht zu verstehen, was ist die Idee, dass eine effiziente Lösung für diese einfachen Algorithmus. Soweit ich das verstanden habe, sollte ich nur eine einfache Schleife von 1 bis n und suchen nach dem maximalen Wert. Ist die "effizienteste" Algorithmus weist darauf hin, dass, Wenn ich den Wert von n in dem array kann ich aufhören zu suchen, mehr Werte, denn dies ist der höchste Wert im array?

  2. Wie Ermittle ich die beste Laufzeit und die Durchschnittliche Laufzeit mit der Tatsache, während in die Berechnung der durchschnittlichen Laufzeit, dass Es eine gleichmäßige Verteilung.
    Das heißt, jede Zelle im array hat eine chance von 1/n der maximale Wert.

Vielen Dank im Voraus!

  • Klingt wie Hausaufgaben... was haben Sie kommen mit so weit? Hinweis: sortierte arrays O(1) Laufzeit, um die max - /min-Werte.
  • Aber die Bestimmung der array sortiert O(n) 😐
  • so einfach ziehen Sie die max/min-Werte auf beliebige array.
  • das array ist nicht sortiert. Ich bin nicht die eine Lösung, aber eine Erklärung für die konkrete Antwort. Als für das, was ich kam so weit, ich schrieb in meiner Frage.
  • wahrscheinlich mit #1 ist, dass man NICHT wissen KANN, was die max/min-Werte im array sind, bis Sie haben gescannt, das gesamte array, oder im Voraus wissen, dass das array vorsortiert. z.B. für beliebige "weiß nicht, ob sortierten arrays", es ist eine O(n) - operation zu bekommen, dass die max/min-Wert gesetzt.
  • Ja, natürlich, Es ist O(n). aber die Tatsache, es sind nur zahlen zwischen 1..n ermöglicht es mir, dass der Algorithmus ein wenig effizienter, indem Sie aufhören zu suchen, in Fall fand ich den Wert n ein. richtig?
  • "Der maximale Wert in einem array mit Größe n enthält die zahlen 1,2,...n mit Wiederholungen" ist offensichtlich n, nicht wahr?
  • Es enthält zahlen zwischen 1...n (nicht alle). Auch die Tatsache, dass es sein könnte, Wiederholungen impliziert nicht alle zahlen immer zeigen.

Schreibe einen Kommentar