Mam problem, otóż próbuję posortować liczby, które są umieszczone w vectorze 2D, mianowicie - każdy "wiersz" to osobna liczba, a każda "komórka" to osobna cyfra tej liczby.
vector <int> character(1);
vector < vector <int> > line(1, character);
(Dane są wczytywane w pętli z pliku.)
I chciałbym te liczby (wiele z nich przekracza zakres long long int) posortować od najmniejszej do największej - robię to tak:
//Bubble sort :)
for (int i=0; i<line.size()-1; i++)
{
for (int j=0; j<line.size()-i-1; j++)
{
if (line[j].size()>line[j+1].size()) swap(line[j],line[j+1]);
else if (line[j].size()==line[j+1].size())
{
for (int k=0; k<line[j].size()-1; k++)
{
if (line[j][k]>line[j+1][k]) {swap(line[j],line[j+1]); break;}
}
}
}
}
No i owszem, według ilości cyfr liczby te są świetnie posortowane - ale liczby o tej samej długości już nie.
W najbardziej wewnętrznej pętli oparłem się na założeniu, że należy porównywać kolejne cyfry k (od lewej, np. od tysięcy do jedności) danych dwóch liczb j i j+1, by określić która jest większa.
Czy ktoś jest mi w stanie wskazać co jest nie tak?