Arrays vergleichen, die gleiche Elemente in unterschiedlicher Reihenfolge haben

7

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%

}

    
crazyTechie 12.11.2011, 09:27
quelle

6 Antworten

20

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 :

%Vor%

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%     
Jon Skeet 12.11.2011, 09:29
quelle
4

Wenn Sie keine Duplikate haben, können Sie die Arrays in Mengen umwandeln:

%Vor%

Sonst:

%Vor%     
Itay Maman 12.11.2011 09:30
quelle
1

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.

    
Tudor 12.11.2011 20:11
quelle
0

Sie erfinden Rad neu, um Arrays zu sortieren .

Verwenden Sie

%Vor%

gibt es auch Methoden, um primitive Typen wie int.

zu sortieren     
viktor 12.11.2011 09:53
quelle
0

Probieren Sie diese Funktion aus, um das Array zurückzugeben: -

%Vor%     
duggu 28.08.2013 06:00
quelle
0
%Vor%     
pooja 09.02.2016 15:05
quelle

Tags und Links