sortieren

Paddy.

Aktives Mitglied
Ich hab eine Array von Objekten (die compareTo implementieren)
Scheinbar gibts die Collections.sort in der j2me nicht;(
Also hatte besser eine art bubble-Sort was auch gut funktioniertte bis meine Objekt Anzahl zu groß wurde. Und die anzeige der Objekte ins nichts verläuft bzw. erst nach 5min fertig ist*g* bischen dumm.

Hat jmd eine Möglichkeit bzw. Vorschläge welcher Sortier-Algorithmus zeitmäßig effizient läuft.???:L
 

madboy

Top Contributor
Sortieralgorithmen gibt's ne ganze Menge. Frage einfach mal Wikipedia danach.
Der Einfachheit halber könntest du aber auch die entsprechende(n) Methode(n) aus Collections kopieren. Dabei aber die Lizenz beachten ;-)
 

Paddy.

Aktives Mitglied
ja aber was ist den speicher und geschwindkeitsoptimal für ein mobiltelefon ???:L

Programmieren könnte ich die meisten selbst nur war ich zu faul bisher und dachte das macht bei den 100 net soviel aus :rtfm:
 

XHelp

Top Contributor
Halbwissen: kannst du dir nicht RecordStrore basteln? Dazu kannst du auch ein Comparator basteln und er sortiert es automatisch. Ich denke das Verfahren wurde da passend umgesetzt.
 

Paddy.

Aktives Mitglied
ich kann mir eigentlich nicht vorstellen das die Objekte serielliesieren ins Dateisystem schreiben, sortieren, auslesen schneller sein soll als nur sortieren?
 

ARadauer

Top Contributor
ja aber was ist den speicher und geschwindkeitsoptimal für ein mobiltelefon ???:L

Programmieren könnte ich die meisten selbst nur war ich zu faul bisher und dachte das macht bei den 100 net soviel aus :rtfm:

Mhn um wie viele Elemente geht es den?
Die API verwendet normalerweise merge sort... das würd ich einfach mal ausprobieren...
 

Paddy.

Aktives Mitglied
ja meine Liste wird einmalig bei Programmstart aufgebaut, dann sortiert und verwendet. Spätere hinzufügen und daher auch sortieren ist nicht nötig.
:rtfm: Dachte wenn ich die beim aufbau da einfüge wo sie hin gehören ???:L
Dann müsste ich worst Case die Liste Komplett durchlaufen, die aber nur am ende n ist und voher kleiner. Also beim ersten mal 1 dann 2,....(n-1), n das ist doch schneller als n²
 

andiv

Bekanntes Mitglied
Bevor du jetzt ewig drüber nachdenkst wie du sortieren kannst, würd ich an deiner Stelle entweder eine Implementation von Collections.sort() kopieren oder kurz ein MergeSort, QuickSort oder HeapSort implementieren. Die haben alle im average-case O(n*log(n)) und sind auch nicht sonderlich schwer zu programmieren.
 

ThreadPool

Bekanntes Mitglied
normale LinkedList gibts nicht? das wäre toll dann könnte man sinnvoll bei der Erstellung der Liste sortieren.

Jupp, funktioniert. Du verwendest dann zum Einfügen und Finden die Binäre Suche, das funktioniert, weil die Liste ja immer sortiert sein soll. Zur Frage der Speichereffizienz da würde man denke ich die Inplace-Variante von Mergesort nehmen wenn es denn um ein "sortieren on demand" geht.
 
Zuletzt bearbeitet:

Landei

Top Contributor
Die binäre Suche wäre im Endeffekt langsamer als eine lineare, weil bei einer LinkedList beim indizierten Zugriff nicht wie bei einer ArrayList direkt zum gewünschten Element gesprungen werden kann, sondern von vorn gestartet wird.
 

ThreadPool

Bekanntes Mitglied
Hm, da hatte ich wohl zu sehr an eine ArrayList gedacht. Wenn er die nimmt sollte es wieder gehen.
Alternativ kann er sich auch eine Skipliste bauen die natürlich wieder mehr Speicher verbraucht.
 

Neue Themen


Oben