Maison  >  Article  >  développement back-end  >  Comment trouver le deuxième plus grand nombre dans un tableau en php

Comment trouver le deuxième plus grand nombre dans un tableau en php

PHPz
PHPzoriginal
2023-05-11 09:46:36508parcourir

PHP, en tant que langage de développement populaire, possède de nombreuses syntaxes et fonctions puissantes pour prendre en charge le travail des développeurs. En termes d’opérations sur les tableaux, PHP propose également diverses méthodes pour résoudre différents types de problèmes. Parmi eux, trouver le deuxième plus grand nombre dans un tableau est également une tâche courante. Dans cet article, nous présenterons quelques fonctions et algorithmes PHP pour vous aider à trouver rapidement le deuxième plus grand nombre d'un tableau.

Tout d'abord, nous pouvons utiliser les fonctions intégrées de PHP pour obtenir le plus grand nombre et le plus petit nombre du tableau. Ces fonctions sont respectivement max() et min().

Par exemple, supposons que nous ayons un tableau de nombres :

$arr = [3, 1, 7, 4, 5];

Nous pouvons obtenir la valeur maximale comme ceci :

$max = max($arr);

Cela renverra 7. De même, nous pouvons obtenir la valeur minimale comme ceci :

$min = min($arr);

Cela renverra 1. Avec ces données, nous pouvons utiliser une boucle pour trouver le prochain plus grand nombre :

$secondMax = $min;
foreach ($arr as $number) {
   if ($number > $secondMax && $number < $max) {
      $secondMax = $number;
   }
}

Cette boucle vérifiera chaque nombre du tableau un par un, s'il est plus grand que le deuxième plus grand nombre, mais plus petit que le plus grand nombre, puis il deviendra le nouveau deuxième plus grand nombre. À la fin de la boucle, $secondMax contiendra le deuxième plus grand nombre que nous recherchons. S'il n'y a pas de deuxième plus grand nombre dans le tableau, alors $secondMax restera à la valeur minimale, $min.

Bien que cette solution fonctionne, sa complexité est O(n). Si le tableau est grand, cela peut rendre le programme inefficace. Nous pouvons donc utiliser une solution plus efficace.

La deuxième solution consiste à utiliser la fonction rsort() de PHP pour trier le tableau dans l'ordre inverse. Ensuite, nous pouvons obtenir le deuxième élément du tableau comme étant le deuxième plus grand nombre.

rsort($arr);
$secondMax = $arr[1];

La complexité temporelle de cette solution est O(nlogn), ce qui est plus rapide que la première solution. Cependant, cela nécessite de trier l’ensemble du tableau et peut donc utiliser plus de mémoire.

La troisième solution consiste à utiliser la fonction array_unique() de PHP pour supprimer les éléments en double, puis à utiliser la fonction rsort() pour trier le tableau dans l'ordre inverse, et enfin à obtenir le deuxième élément du tableau comme deuxième plus grand nombre.

$arr = array_unique($arr);
rsort($arr);
$secondMax = $arr[1];

Cette solution supprime les éléments en double pour éviter les nombres sous-maximaux en double. Puisque la complexité temporelle est O(nlogn), elle est similaire à la deuxième solution.

Pour résumer, vous pouvez utiliser les trois méthodes ci-dessus pour trouver le deuxième plus grand nombre dans un tableau. Parmi elles, la première solution est la plus simple, mais peut être moins efficace ; la deuxième solution obtient la valeur cible en triant dans l'ordre inverse, mais nécessite de la mémoire supplémentaire ; la troisième solution peut supprimer les éléments en double, mais est moins efficace. Semblable à la seconde ; solution en termes d’utilisation de la mémoire. Vous pouvez choisir la solution qui vous convient le mieux en fonction de votre scénario réel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn