Ich habe den folgenden Code geschrieben, um mit Arrays zu vergleichen, die dieselben Elemente haben, aber in der Reihenfolge diff.
%Vor%Zum Beispiel sind obige Arrays gleich wie die gleichen Elemente 1,2,4,6,7. Wenn Sie besseren Code für größere Arrays haben, teilen Sie bitte.
Bearbeiten Wenn eindeutige Elemente aus beiden Arrays entnommen werden und wenn sie gleich aussehen, sollte auch das Array gleich sein. Wie schreibe ich den Code, ohne Sammlungsklassen zu verwenden? Beispiel: arr1 = {1,2,3,1,2,3} arr2 = {3,2,1} Die Methode sollte true zurückgeben (= beide Arrays sind gleich).
%Vor%}
Interessieren Sie sich für doppelte Zählungen? Müssten Sie zum Beispiel zwischen { 1, 1, 2 }
und { 1, 2, 2 }
unterscheiden? Wenn nicht, benutze einfach HashSet
:
Wenn Sie sich für Duplikate interessieren, können Sie entweder Multiset
von Guava verwenden .
Wenn Sie bei der Sortierversion bleiben möchten, warum verwenden Sie nicht die integrierten Sortieralgorithmen, anstatt eigene zu schreiben?
BEARBEITEN: Sie müssen nicht einmal eine Kopie erstellen, wenn Sie die vorhandenen Arrays ändern möchten. Zum Beispiel:
%Vor%Sie können auch eine Optimierung für den Fall haben, dass die Arrays nicht die gleiche Länge haben:
%Vor%Wenn Sie keine Duplikate haben, können Sie die Arrays in Mengen umwandeln:
%Vor%Sonst:
%Vor%Wenn Sie das Intervall der Werte kennen, können Sie ein Integer-Array mit der Größe halten, die dem maximalen Element der Sequenzen entspricht. Durchqueren Sie dann jedes Array und erhöhen Sie die Zahl um 1 an der Position, die dem Wert im Zählerfeld entspricht. Am Ende durchqueren Sie das Zähler-Array und bestimmen, ob alle Elemente, die nicht 0 sind, 2 sind. In diesem Fall sind die Arrays gleich.
%Vor%Dies setzt voraus, dass es keine Duplikate gibt. Wenn Sie Duplikate haben, fügen Sie in den ersten beiden for-Schleifen Folgendes hinzu:
%Vor%Dies stellt sicher, dass Dubletten nach dem ersten nicht berücksichtigt werden.