Boucle sur les 20 premiers éléments d'un tableau en Java
J'ai cette boucle d'
for(int i =0; i < prices.length; i++)
{
if(prices[i]>largest)
{
largest = prices[i];
}
else if(prices[i]<smallest)
{
smallest= prices[i];
}
}
qui parcourt tout le tableau et trouve les valeurs min et max. Dire que je voulais seulement faire une boucle par les 20 premiers éléments comment dois-je faire? J'ai essayé le long des lignes de mettre une boucle imbriquée dans le cadre de cette boucle et de voir si je tombe sur elle, mais je ne peux pas.
Changer la condition de
Aucune infraction, mais peut-être que c'est mieux de d'abord lire de la littérature sur les bases de la langue?
la plupart des intro des manuels de ne pas montrer que vous pouvez mettre n'importe quelle expression booléenne dans la boucle de la clause. être belle et aider OP out
i < prices.length && i < 20
Aucune infraction, mais peut-être que c'est mieux de d'abord lire de la littérature sur les bases de la langue?
la plupart des intro des manuels de ne pas montrer que vous pouvez mettre n'importe quelle expression booléenne dans la boucle de la clause. être belle et aider OP out
OriginalL'auteur user1816464 | 2013-02-04
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement ajouter la condition de la boucle de contrôle de l'état:
Ce serait de vérifier les 20 premiers éléments où il ya plus de 20 dans le tableau, mais l'ensemble du tableau si il y a moins de 20 articles.
OriginalL'auteur Andrew Cooper
Cette boucle à travers 20 fois, c'est à dire vingt premiers éléments du tableau.
prices
?J'ai édité la réponse pour vérifier la longueur du tableau.
OriginalL'auteur user2033853
5 réponses et ils ont tous une double comparaison dans la boucle?
Pas étonnant, les programmes Java courir si lentement...
La façon correcte de faire une telle boucle est:
le déplacement de la comparaison entre la longueur et 20 de la boucle et de l'évaluation de la boucle condition donc deux fois plus rapide. (ignorant ce que le JIT pourrait ou ne pourrait pas faire)
Aussi, vous devez initialiser le plus grand/plus petit avec le premier élément (ou si vous obtenez des valeurs non valides, si il y a un seul élément dans le tableau en raison de l'autre), et puis vous pouvez passer le premier élément dans la boucle, ce qui rend encore "plus vite":
Oui, mais vous demandons également de Min, en boucle, au lieu avant la boucle
je pense que le java optimiseur de prendre soin de la redondance des évaluations
ici, je n'étais pas sûr à 100%, j'ai donc posé la question: stackoverflow.com/questions/14711125/...
Non seulement le compilateur susceptibles de hisser la constante, mais aussi n'importe quel programme écrit par un novice qui venait de poser cette question est susceptible d'avoir beaucoup plus d'inefficacités que cela. En les encourageant à réfléchir à propos de ces petites microoptimizations ne va pas aider du tout.
OriginalL'auteur BeniBela
Remplacer
prices.length
avecMath.min(20, prices.length)
, qui est la longueur du tableau ou 20, selon la valeur la plus petite:for(int i =0; i < Math.min(20, prices.length); i++)
OriginalL'auteur amphibient
Changer votre boucle for pour quelque chose comme ceci:
OriginalL'auteur partlov
Si vous ne voulez boucle dans les 20 premiers éléments, dites-le dans l'en-tête de la boucle, comme ceci.
Commentaire et downvote supprimé
OriginalL'auteur Michael
valeur maximale est correct pour obtenir le minimum est simple de faire max = min
puis le travail comme
puis
OriginalL'auteur Ali Jammal