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