-2
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的指針。爲什麼此快速排序功能不起作用?
StackOverflow是不是一個地方轉儲你的作業問題 – recurf
好吧,你知道我可以愚蠢我的作業問題的地方嗎? – NoIdea