void swap(Person* a, int i, int j) {
Person b;
b = a[i];
a[i] = a[j];
a[j] = b;
}
void quicksort(Person* a, int left, int right, PersonComparator cmp) {
if (left >= right) return; // 0 or 1 elements, recursion end
swap(a, left, (left + right)/2); // move pivot element to left
int j = left;
for (int i = left + 1; i <= right; i++) {
if (i < left) {
swap(a, ++j, i);
}
// assert: v[i] < v[left] for i = left+1..j
}
swap(a, left, j); // move back pivot element
quicksort(a, left, j-1, cmp); // assert: v[i] < v[j] for i = left..j-1
quicksort(a, j+1, right, cmp); // assert: v[i] >= v[j] for i = j+1..right
}
Я как-то должен получить этот «cmp» там, но я не знаю, где и как. Person * является указателем на struct Person btw.Почему эта функция quicksort не работает?
StackOverflow не является местом для сбрасывания домашних заданий – recurf
ok, вы знаете место, где я могу глупо задавать домашние вопросы? – NoIdea