Was ist die Schnellste Möglichkeit, zu vergleichen, zwei arrays auf Gleichheit?
Ich habe zwei arrays von Objekten, die wahrscheinlich die gleichen Werte, aber in einer anderen Reihenfolge, z.B.
{ "cat", "dog", "mouse", "pangolin" }
{ "dog", "pangolin", "cat", "mouse" }
Möchte ich behandeln diese beiden arrays gleich. Was ist der Schnellste Weg, dies zu testen?
InformationsquelleAutor der Frage izb | 2010-11-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann ich nicht garantieren, dass dies die Schnellsteaber es ist sicherlich ziemlich effizient:
BEARBEITEN:
SaeedAlg und Sandris erhöhen gültigen Punkte über die verschiedenen Frequenzen von Dubletten verursachen Probleme mit diesem Ansatz. Ich sehe zwei Möglichkeiten, wenn dies wichtig ist (habe nicht viel daran gedacht, Ihre jeweiligen Wirkungsgrade):
1.Sortieren Sie die Felder, und dann vergleichen Sie Sie der Reihe nach. Dieser Ansatz, in der Theorie, haben sollte quadratischen Komplexität im schlimmsten Fall.
E. g.:
2.Der Aufbau eines Frequenz-Tabelle von Zeichenfolgen in jedem array und Sie dann vergleichen. E. g.:
InformationsquelleAutor der Antwort Ani
Ich denke, der einzige sinnvolle Weg ist, um Sie zu Sortieren und dann vergleichen.
Sortierung erfordert
O(n logn)
und vergleichenO(n)
so dass noch insgesamtO(n logn)
InformationsquelleAutor der Antwort usr-local-ΕΨΗΕΛΩΝ
Haben Sie versucht, so etwas wie
InformationsquelleAutor der Antwort Adriaan Stander
Konvertieren arrays zu HashSets und verwenden setequals
InformationsquelleAutor der Antwort Martin DeMello
Würde ich ein HashSet, vorausgesetzt, es gibt keine Duplikate
Edit:
Wenn Sie nur vier Elemente, könnte es schneller zu überspringen, HashSet und verwenden arr1.Enthält im Vergleich. Messen und wählen Sie die am schnellsten für Ihre array-Größe.
InformationsquelleAutor der Antwort Albin Sunnanbo
Pseudocode :
InformationsquelleAutor der Antwort Mohammad Mazaz