Witam, uczę się algorytmów i mam mały problem z sortowania
Mam 10 liczb zapisanych stringami, np:
123, 1334, 54535354, 543454, 412421421, 122, 41242141214242141224155125215, 5214, 523532532532532532, 532532
Na początku sortuję je bąbelkowo wg. długości stringa i to jest ok.
Ale potem muszę ponownie sortować, no bo przecież mogę mieć kilka liczb tej samej długości.
Używam metody at() aby sprawdzać znaki na kolejnych indeksach stringów, ale moja funkcja nie działa.
Poniżej jej kod:
void drugie_sortowanie(string* tab, int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1; j++) {
if (tab[j].length() == tab[j + 1].length())
{
int a = 0;
if (tab[j].at(a) > tab[j + 1].at(a) && (j+1) < n)
swap(tab[j], tab[j + 1]);
else {
a = 1;
int x = -1;
while (x != 1) {
if (tab[j].at(a) > tab[j + 1].at(a)) {
swap(tab[j], tab[j + 1]);
x = 1;
}
else if (tab[j].at(a) == tab[j + 1].at(a)) {
a++;
}
}
}
}
}
}
}
Czasem odpali ale przesortuje tylko dla liczb obok siebie: np: 1243, 1241, 12441412124
, dla takiego wariantu: 1412, 124214421412, 1411
już nie
Potrafi ktoś wskazać błąd?
Czy może w ogole źle podchodzę do tego?