return sorted[i]->getName().compare(sorted[j]->getName());
}
//перестановка элементов листа
void swap(vector<Information*>& sorted, int i, int j) {
Information* temp = sorted[i];
sorted[i] = sorted[j];
sorted[j] = temp;
};
vector<Information*> sortByName() {
vector<Information*> sorted = (this->students);
qsort(sorted, 0, sorted.size() - 1, &Students::nameComparator);
return sorted;
}
void qsort(vector<Information*> & sorted, int left, int right, int (Students::*cmp)(vector<Information*>, int, int)) {
if (left < right) {
int l = left, r = right, m = (l + r) / 2;
do {
while ((this->*cmp)(sorted, l, m) < 0) l++;
while ((this->*cmp)(sorted, m, r) > 0) r--;
if (l <= r) swap(sorted, l++, r--);
} while (l <= r);
qsort(sorted, left, r, cmp);
qsort(sorted, l, right, cmp);
}
}
Добрый день.
Не подскажите, почему может некорректно сортировать?
Очень странный код. Если это задание или цель сделать сортировку самому, то там нужно делать универскльную функцию сравнения.
Обсуждают сегодня