Laden...

List<..>.Sort -Ergebnisse bei gleichen Werten

Erstellt von derfrecheDachs vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.636 Views
D
derfrecheDachs Themenstarter:in
34 Beiträge seit 2006
vor 16 Jahren
List<..>.Sort -Ergebnisse bei gleichen Werten

Ich versuche eine Liste zu sortieren, die z.t gleiche Werte aufweisst. Die Sortierung springt dabei von 2 Zuständen hin und her. Kann man das irgendwie verhindern oder hat Sort bei gleichen Werten Probleme ??

<Beispiel> Sotierung nach M, ergibt einmal
A : 21 M. 50 L 22
A : 0 M. 50 L 2
A : 5 M. 50 L 7
A : 49 M. 50 L 12
A : 13 M. 50 L 16
A : 17 M. 50 L 19
A : 33 M. 50 L 22
A : 25 M. 50 L 22
A : 29 M. 50 L 22
A : 9 M. 50 L 5
A : 37 M. 50 L 20
A : 45 M. 50 L 15
A : 53 M. 50 L 10
A : 57 M. 50 L 9
A : 61 M. 50 L 6
A : 65 M. 50 L 5
A : 69 M. 50 L 4
A : 73 M. 50 L 3
A : 77 M. 50 L 2
A : 81 M. 50 L 1
A : 85 M. 50 L 1
A : 89 M. 50 L 1
A : 93 M. 50 L 0
A : 97 M. 50 L 0
A : 41 M. 120 L 35

danach erneute Sortierung nach M, ergibt :

A : 65 M. 50 L 5
A : 69 M. 50 L 4
A : 73 M. 50 L 3
A : 53 M. 50 L 10
A : 57 M. 50 L 9
A : 61 M. 50 L 6
A : 89 M. 50 L 1
A : 93 M. 50 L 0
A : 97 M. 50 L 0
A : 77 M. 50 L 2
A : 81 M. 50 L 1
A : 85 M. 50 L 1
A : 49 M. 50 L 12
A : 13 M. 50 L 16
A : 17 M. 50 L 19
A : 21 M. 50 L 22
A : 0 M. 50 L 2
A : 5 M. 50 L 7
A : 9 M. 50 L 5
A : 37 M. 50 L 20
A : 45 M. 50 L 15
A : 33 M. 50 L 22
A : 25 M. 50 L 22
A : 29 M. 50 L 22
A : 41 M. 120 L 35

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo derfrecheDachs,

Stichwort ist "stabil". List<>.Sort verwendet Quicksort und Quicksort arbeitet nicht stabil. Wenn du keinen IComparer definieren kannst, der eine totale Ordnung garantiert, dann musst du auf einen anderen, stabilen Sortieralgorithmus ausweichen.

herbivore

2.760 Beiträge seit 2006
vor 16 Jahren

The SortedList generic class is a binary search tree with O(log n) retrieval

Also auf Collections.Generic.SortedList umsteigen.

0
767 Beiträge seit 2005
vor 16 Jahren

du müsstest den Comparer so schreiben, dass er bei gleichen M noch nach L sortiert.

loop:
btst #6,$bfe001
bne.s loop
rts

D
derfrecheDachs Themenstarter:in
34 Beiträge seit 2006
vor 16 Jahren

Danke euch für die Antworten.

Wusste bisher nicht, dass der Quicksort instabil ist.

Ich hab jetzt den IComparer so angepasst, dass er bei gleichen Werten einfach die nächste Spalte zum Sortieren mit hinzunimmt.
Also wenn ich zuerst nach A sortiere, dann M und L hinzunehme