Maison >développement back-end >C++ >Explication détaillée de la fonction mode en C++
Explication détaillée de la fonction mode en C++
En statistiques, le mode fait référence à la valeur qui apparaît le plus fréquemment dans un ensemble de données. En langage C++, nous pouvons trouver le mode dans n’importe quel ensemble de données en écrivant une fonction de mode.
La fonction mode peut être implémentée de différentes manières. Deux des méthodes couramment utilisées seront présentées en détail ci-dessous.
La première méthode consiste à utiliser une table de hachage pour compter le nombre de fois où chaque numéro apparaît. Tout d’abord, nous devons définir une table de hachage avec chaque nombre comme clé et le nombre d’occurrences comme valeur. Ensuite, pour l'ensemble de données donné, nous parcourons chaque nombre, en le comparant à la clé de la table de hachage. Si le numéro existe déjà dans la table de hachage, on ajoute 1 à la valeur correspondante ; si le numéro n'existe pas dans la table de hachage, on l'ajoute à la table de hachage et on fixe sa valeur à 1. Enfin, on parcourt la table de hachage et on trouve le numéro qui apparaît le plus souvent, qui est le mode.
Ce qui suit est un exemple de code qui utilise une table de hachage pour implémenter la fonction majoritaire :
#include <iostream> #include <unordered_map> #include <vector> using namespace std; int majorityElement(vector<int>& nums) { unordered_map<int, int> count; for (int num : nums) { count[num]++; } int majority = nums[0]; int maxCount = count[nums[0]]; for (auto& pair : count) { if (pair.second > maxCount) { majority = pair.first; maxCount = pair.second; } } return majority; } int main() { vector<int> nums = {1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4}; int result = majorityElement(nums); cout << "The majority element is: " << result << endl; return 0; }
Exécutez le code ci-dessus et le résultat de sortie est :
L'élément majoritaire est : 4
Une autre méthode consiste à utiliser les propriétés de le tableau pour l'optimisation. Tout d’abord, nous trions l’ensemble de données. Ensuite, nous parcourons le tableau trié et comptons le nombre de fois où chaque nombre apparaît. Étant donné que le même numéro apparaîtra en continu, vous pouvez déterminer s'il apparaît en continu en comparant si le numéro actuel et le numéro précédent sont égaux. Si le nombre actuel est égal au nombre précédent, le décompte est incrémenté de 1 sinon, on recommence à compter ; Enfin, on trouve le nombre avec le plus grand nombre, qui est le mode.
Ce qui suit est un exemple de code de la fonction majoritaire optimisée à l'aide du tri par tableau :
#include <iostream> #include <vector> #include <algorithm> using namespace std; int majorityElement(vector<int>& nums) { sort(nums.begin(), nums.end()); int majority = nums[0]; int count = 1; int maxCount = 1; for (int i = 1; i < nums.size(); i++) { if (nums[i] == nums[i - 1]) { count++; } else { count = 1; } if (count > maxCount) { majority = nums[i]; maxCount = count; } } return majority; } int main() { vector<int> nums = {1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4}; int result = majorityElement(nums); cout << "The majority element is: " << result << endl; return 0; }
Exécutez le code ci-dessus, le résultat de sortie est :
L'élément majoritaire est : 4
Les deux méthodes ci-dessus sont couramment utilisées pour implémenter la majorité dans la fonction numérique C++. Ces méthodes sont très efficaces et peuvent trouver correctement le mode sur différents ensembles de données. En fonction des besoins réels et des caractéristiques des données, nous pouvons choisir d’utiliser l’une de ces méthodes pour résoudre des problèmes spécifiques. J'espère que cet article vous aidera à comprendre la fonction mode en C++.
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!