# Sortieren sehr grosser Dateien



## Schlaue Frage (25. Mai 2004)

Hallo,

wie kann man in Java grosse Dateien (nicht Tabellen!!!!) sortieren. Bitte keine Array-Sorts oder Bubble-Sorts oder sonstig verwirrtes... Danke


----------



## bygones (25. Mai 2004)

Wie willst du sonst große Daten sortieren wenn du Sortieralgorithmen ablehnst ?

Wenn deine Daten in einem Array sind kannst:

```
Arrays.sort(meinArray)
```
 schreiben
bei einer Liste:

```
Collections.sort(meineListe);
```


----------



## Schlaue Frage (25. Mai 2004)

Grosse Datei ...  das File ist etwa 450 MB (MegaByte) gross ...

dann möchte ich nach verschiedenen Kriterien sortieren, z.B. aufsteigend nach Feld1, dann absteigend nach Feld2, etc.

PS: Hauptspeicher ist nicht grenzenlos verfügbar, gelle!


----------



## bygones (25. Mai 2004)

dann musst du dir ne art indexierung einfallen lassen....
Mir fällt erstmal nichts ein wie du die Daten sortieren könntest ohne die daten einmal komplett im speicher zu haben...


----------



## EinGast (7. Jun 2004)

wenn ich mich richtig erinnere gabs da so nen Sortier-Algo, bei dem du die gesamten Datein aufgeteilt hast, z.B. in 4 gleich große Teile.

sortiere den ersten Teil
sortiere den zweiten Teil
sortieren den dritten Teil
sortieren den vierten Teil

anschließend hat man dann den ersten Teil mit dem zweiten kombiniert und den dritten mit den vierten
und zuletzt die beiden Teile, die übrig blieben

wenn ich jetzt noch mein Vorlesungscript finden würd, könnt ich dir sogar sagen, wie der Algo heiß.

speicher dürfte der algo nicht viel fressen, weil du effektiv immer 2 vorsortierte werte miteinander vergleichst und dann jeweils das nächste element in den speicher laden musst...


----------



## bygones (7. Jun 2004)

du meinst wahrscheinlich *MergeSort*.
Der sortiert teile des ganzen und verbindet diese teile dann


----------



## EinGast (7. Jun 2004)

jep, genau das!

sollte sich bei bekannter anzahl der datensätze (aber eigentlich auch ohne diese kenntnis) so umsetzen lassen, dass immer nur 2 (oder doch 3) Datensätze mit einem mal in den Speicher geladen werden müssen.

aber ich denke mal google, dürfte bei dem Problem hilfreich sein, ist schließlich thema einer jeden informatik-vorlesung...


----------

