Also wenn ich dich richtig verstanden habe brauchst du 2 Sortieralgorithmen.
1. Sortieren nach Kategorie
2. Absteigend sortieren.
Ich schlage dir da einfach mal den Quicksort Algorithmus vor.
Den wendest du 2 ( eigentlich 5 mal )mal an.
1. Anwendung sortiert das gesamte Feld ( das geht nur wenn du deine Kategorie strings zwischenzeitig in einen Integer bastelst der dann sortiert werden kann, sonst hast du zu viele String vergleiche ).
das Tolle am Quicksort du kannst Grenzen angeben.
als 2 - 5 ten schritt rufst du den Quicksort wieder auf. Diesmal soll er die Anzahl in der Kategorie sortieren, Als Grenzen übergibst du dann immer die grenzen der Kategorieen. Diese Grenzen kannst du vorher mit nur einem Schleifendurchlauf ermitteln
.
also in etwa so
Delphi-Quellcode:
1. Quicksort(0,n-1)
[a,b,a,c,b,a,c,b,c,a]
=>
[a,a,a,a,b,b,b,c,c,c]
2. Quicksort2(0,3)
3. Quicksort2(4,6)
4. Quicksort2(7,9)
Wenn es 3 Kategorien wären ( a,b,c) und Quicksort2 sortiert dann nach Anzahl...