Sorry mann, aber ES IST schon sortiert. Defakto musst du garnichts sortieren in diesem Fall, und brauchst keinen Bubblesort oder ähnliches.
Schau die Sache ist doch ganz einfach:
deine Zahl 123456441 besteht aus 8 Ziffern -> 1,2,3,4,5,6,4,4,1 richtig ? Nun zählen wir einfach alle diese Ziffern, wir berechnen deren Anzahl. Das machen wir indem wir einfach die Ziffern als Index in ein Array[0..9] benutzen.
Count[0] = 0;
Count[1] = 2; weil zwei Einsen vorkommen
Count[2] = 1; weil eine Zwei vorkommt
Count[3] = 1; weil eine Drei vorkommt
Count[4] = 3; weil drei Vieren vorkommmen
Count[5] = 1; weil eine Fünf vorkommt
Count[6] = 1; weil eine Sechs vorkommt
Count[7] = 0;
Count[8] = 0;
Count[9] = 0; weil keine 7,8,9 vorkommen.
Nun gehen wir einfach das Array Count[] von unten nach oben durch, also von 0 bis 9 und bauen den String zusammen
'11' + '2' + '3' + '444' + '5' + '6' -> '112344456' weil
2* die '1'
1* die '2'
1* die '3'
3* die '4'
1* die '5'
1* die '6'
kommen im array Count[] vor.
Willst du das andersrum sortiert haben -> '65444321' dann gehst du das Array Count eben einfach von Oben nach Unten in der Schleife durch:
Delphi-Quellcode:
for I := High(Count) downto Low(Count) do
...
fertig. Du musst also im Grunde garnichts sortieren, noch brauchst du viel an Speicher, das Einzigste was du ge-brauchen musst ist dein Hirn, und das Wissen das man manche Dinge auch ohne Bubblesort oder andere komplizierte Techniken lösen kann
Gruß Hagen