Actuellement, je teste chaque élément entier l'un par rapport à l'autre pour trouver ceux qui correspondent. Les tableaux ne contiennent pas de doublons dans leur propre ensemble. En outre, les tableaux ne sont pas toujours des longueurs égales. Y a-t-il des astuces pour accélérer cela? Je le fais des milliers de fois, donc ça commence à devenir un goulot d'étranglement dans mon programme, qui est en C#.Quel est le moyen le plus rapide pour trouver le nombre de correspondances entre les tableaux?
Répondre
Utilisez un HashSet
var set = new HashSet<int>(firstArray);
set.IntersectWith(secondArray);
L'ensemble contient maintenant uniquement les valeurs qui existent dans les deux tableaux.
Je pense que vous voulez. Intersect plutôt que .Union –
Ahh cerveau pet! Merci. Je l'ai édité. – Josh
Juste essayé le HashSet avec IntersectWith et il est deux fois plus lent par rapport à itérer sur tous les éléments. –
Vous pouvez utiliser LINQ:
var query = firstArray.Intersect(secondArray);
Ou si les tableaux sont déjà triés, vous pouvez itérer sur les deux tableaux vous:
int[] a = { 1, 3, 5 };
int[] b = { 2, 3, 4, 5 };
List<int> result = new List<int>();
int ia = 0;
int ib = 0;
while (ia < a.Length && ib < b.Length)
{
if (a[ia] == b[ib])
{
result.Add(a[ia]);
ib++;
ia++;
}
else if (a[ia] < b[ib])
{
ia++;
}
else
{
ib++;
}
}
@Mark: votre code suppose silencieusement que les tableaux sont triés – Vlad
John a déjà indiqué que les tableaux sont classés dans les commentaires ci-dessus. –
Si une telle comparaison est un goulot d'étranglement dans votre programme, vous utilisez peut-être une structure de données inappropriée. Le moyen le plus simple pourrait être de garder vos données triées. Ensuite, pour trouver les entrées communes, vous devrez traverser les deux tableaux une seule fois. Une autre option consisterait à conserver les données dans un HashSet.
- 1. Quel est le moyen le plus rapide de comparer deux tableaux pour l'égalité?
- 2. Quel est le moyen le plus rapide de trouver un fichier dans Zend Studio pour Eclipse?
- 3. Quel est le moyen le plus rapide pour trouver le point d'intersection entre un rayon et un polygone?
- 4. Quel est le moyen le plus rapide d'utiliser lsof pour trouver un seul fichier ouvert?
- 5. Le moyen le plus rapide pour trouver la distance minimale entre les points
- 6. NSMutableArray. Quel est le moyen le plus rapide pour le convertir en un tableau C simple?
- 7. Quel est le moyen le plus rapide pour supprimer les anciens enregistrements
- 8. Quel est le moyen le plus rapide de rafraîchir les algorithmes pour une interview technique (lundi)?
- 9. Le moyen le plus rapide pour calculer les tailles d'annuaire
- 10. php: quel est le moyen le plus rapide pour afficher les données relatives entre trois tables db
- 11. Quel est le moyen le plus rapide pour lire/écrire sur le disque dans .NET?
- 12. Quel est le moyen le plus efficace pour trouver le dernier chiffre d'un int en C++?
- 13. Quel est le moyen le plus rapide pour 302 un lien vers son URL finale?
- 14. Quel est le moyen le plus rapide pour récupérer le XML intersite en utilisant javascript?
- 15. Quel est le moyen le plus rapide d'écrire/lire une grande table de nombres en Java?
- 16. Quel est le moyen le plus rapide d'apprendre l'objectif-c pour un développeur expérimenté en PHP?
- 17. Quel est le moyen le plus efficace de faire des tableaux d'octets immuables dans Scala?
- 18. Dans .Net, quel est le moyen le plus rapide pour trouver récursivement tous les fichiers d'un répertoire racine?
- 19. Quel est le moyen le plus simple et le plus rapide pour mesurer les performances HD en utilisant Python?
- 20. Quel est le moyen le plus rapide de supprimer les éléments enfants du DOM dans IE?
- 21. Meilleur/le plus simple/le moyen le plus rapide d'obtenir un chemin relatif entre deux fichiers?
- 22. Quel est le bon cas de test pour trouver quel appel de méthode est plus rapide entre execute et getElementsByTagName?
- 23. moyen le plus rapide de trouver une chaîne en C#?
- 24. Dans ASP.NET, quel est le moyen le plus rapide d'obtenir l'URL de base pour une requête?
- 25. Quel est le moyen le plus rapide de commencer avec le framework Kohana PHP?
- 26. Quel est le moyen le plus rapide pour télécharger un énorme ensemble de données à appengine?
- 27. Quel est le moyen le plus rapide d'interroger une table MySQL pour de nouvelles lignes?
- 28. Quel est le sérialiseur le plus rapide de Java?
- 29. Quel est le moyen le plus simple/le plus rapide pour savoir quand une branche git a été créée?
- 30. Quel est le moyen le plus rapide pour combiner deux fichiers xml en un
Est-ce que vous voulez simplement une liste unique de tous les entiers qui existent dans les deux tableaux? – Thomas
Pour ajouter au commentaire de Thomas, les tableaux sont-ils commandés? –
Ce serait une autre façon de le dire. Une liste unique commune dans les deux ensembles. Oui, ils sont commandés. –