Können Sie speichern mehrere ganze zahlen in einem array-index?
Ich versuche zu tun, eine radix-Sortieren und einige algorithmen, die ich gesehen habe haben einen Eimer [ ] - array, das sollte halten mehrere ganze zahlen zu einem index der bucket-array, hier ist der Algorithmus, den ich mich beziehe:
Ist es wirklich möglich, mehrere ganze zahlen in einem index? Und wie so?
Oder gibt es eine einfachere radix-sort-Algorithmus aus?
Dank!!
- In Java
bucket
würde wahrscheinlich einList
Datenstruktur - "Ist es wirklich möglich, mehrere ganze zahlen in einem index?". Ja, eine Möglichkeit ist, dass die Eimer an jedem index.
Du musst angemeldet sein, um einen Kommentar abzugeben.
einen
bucket
wäre einint[]
(oderList
oder irgendetwas, speichern mehrere Elemente) selbst.Können Sie nicht mehr, dass eine Sache-in-1 index.
nicht mehr funktionieren würde, wenn es mehr als ein int.
Die einfachste ist wohl die Verwendung einer
int[][]
array. Nun, jeder index in der linken box bezieht sich auf eine ganze Reihe. Diese arrays können verschiedene Länge zu:Java Jagged Array
Ja, es ist möglich, mehrere
int
zu einem array, aber würden Sie brauchen, um ein array, wobei jedes Element eineObject
eher als eineint
.Zum Beispiel...
Natürlich, wenn Sie nicht immer <=3 Elemente in einen Eimer, konnte Sie ändern Sie einfach die Eimer Klasse, die ein array oder eine
List
als variable anstatt als einzelneint
s.Können Sie auch mehrdimensionale arrays...
Wäre es ein wenig chaotisch zu bekommen, jedoch, wenn Sie anfangen zu spielen, um mit unterschiedlich großen Eimern, und Sie würde mehr tun müssen, Fehler-überprüfung, um sicherzustellen, dass...
int
s, die sind schon da drin.Wenn ist für diese Gründe, warum ich würde empfehlen, mit einem Objekt-basierten array-über ein multi-dimensionales array.
Beiden Fällen buckets zu erstellen
Ersten Fall ist es wirklich nur eine degenerierte Fall der zweite.
Beachten Sie, dass es gibt ein paar radix-sort-Varianten je nachdem, welche Reihenfolge Sie Sortieren die Ziffern in.
Zu beantworten, die Datenstruktur Teil der Frage - Nein kannst du nicht, und würde nicht mehrere Werte speichern in jedem index. Statt, jede Gruppe wird in der Regel dargestellt als eine sub-Sequenz des Arrays. Jeder Eimer wird dann vertreten durch den offset der start (das Ende kann implizit sein).
Neben der Möglichkeit der Darstellung einen Eimer als Liste oder array ist es möglich, verwenden Sie ein array-slice. In diesem Fall, wird das Ziel-array ist die gleiche Gesamtgröße wie das Eingabe-array. Zum Beispiel, Sie haben 2 Elemente in bucket 0, 2 Eimer, 1, 3 im 2 Eimer, 1 Eimer 3 und 2 im Eimer 5.
Doing es auf diese Weise, die Art zu verfolgen, der nächste index für jede Gruppe.
Wow, Arrays und Listen sind nicht der Weg für die Implementierung einer radix-sort. Ja Listen arbeiten, aber es verlangsamt Sie, wenn ich das Tat, es war langsamer als ein merge-sort. Beste Weg ist die Implementierung einer Frequenz-array als Teil einer Zählung, Sortierung pro byte. Ich habe meine code hier, nur in Bezug auf die parallele Sortierung. Hoffe, es hilft.