Re: Doppelte Einträge in Array so schnell wie möglich finden



Hallo,

Mein Ziel ist es dabei so schnell wie möglich zu sein, daher wandle
ich die Arrays bisher in Dictionarys um und mache es damit, doch
selbst das ist mir noch zu langsam.

Die Umwandlung ist selber ja schon zeitraubend.
Um die beste Methode zu finden, käme hier auch
darauf an, ob sortiert, welche Verteilung und Längen
die einzelnen Arrays haben. Also kaum in einem
Satz formulierbar.

Man fragt sich, ob Dir denn LINQ ausreicht?

int[] arr1 = new int[] { 1, 3, 4, 6, 9, 10 };
int[] arr2 = new int[] { 2, 3, 5, 9 };
var doppelte = arr1.Intersect(arr2);

Die Implementation geht hier intern über
Hash Algorithmen und recht effizient.


____________
Ansonsten auch:

[Experimental Analysis of a Fast Intersection Algorithm for Sorted Sequences]
http://www.cs.uwaterloo.ca/~ajsaling/papers/paper-spire.pdf

[Algorithm to find if two sets intersect - Stack Overflow]
http://stackoverflow.com/questions/245557/algorithm-to-find-if-two-sets-intersect



Ich habe viel darüber gelesen, dass die schnellste Methode für so
etwas mit BitArrays wäre, ...

welche zum Beispiel?


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

.