Ich habe diese Schleife hier
%Vor%durchläuft das gesamte Array und findet den Min- und Max-Wert. Sagen wir, ich wollte nur die ersten 20 Elemente durchlaufen, wie mache ich das? Ich habe versucht, eine verschachtelte Schleife unter diese for-Schleife einzufügen und zu sehen, ob ich darauf stoße, aber ich kann nicht.
Sie könnten einfach die Bedingung zu der Schleifensteuerungsbedingung hinzufügen:
%Vor%Dies würde die ersten 20 Elemente überprüfen, wo mehr als 20 im Array sind, aber das gesamte Array, wenn es weniger als 20 Elemente gibt.
Dies wird 20 mal durchlaufen, d. h. die ersten zwanzig Elemente des Arrays.
5 Antworten und sie alle haben einen doppelten Vergleich in der Schleife?
Kein Wunder, Java-Programme laufen so langsam ...
Der richtige Weg für eine solche Schleife ist:
%Vor%verschiebt den Vergleich zwischen Länge und 20 aus der Schleife und bewertet die Schleifenbedingung daher doppelt so schnell. (ignorieren, was das JIT machen könnte oder auch nicht)
Außerdem müssen Sie den größten / kleinsten Wert mit dem ersten Element initialisieren (oder Sie erhalten ungültige Werte, wenn nur ein Element im Array vorhanden ist), und dann können Sie das erste Element in der Schleife überspringen. es sogar "schneller" machen:
%Vor% Ersetze prices.length
durch Math.min(20, prices.length)
, was die Länge des Arrays oder 20 ist, je nachdem, was kleiner ist:
for(int i =0; i < Math.min(20, prices.length); i++)
maximaler Wert ist richtig, um ein Minimum zu erhalten ist einfach make max = min dann arbeite wie dann
%Vor%