我目前正在尝试使用 C 提供的内置快速排序来对指向结构的指针数组进行排序。我想根据结构中的名称元素对每个元素进行排序。
虽然我每次通过比较函数对整个数组的调试输出都显示该函数确实在移动元素,但最终结果不是正确的排序顺序。有什么我在这里看不到的吗?
typedef struct // The custom data type.
{
char *name;
} Person;
----------------------------
Person **people; // A dynamically allocated array of Person pointers.
int numPeople; // The logical index of people.
int maxPeople; // The current maximum capacity of people.
int compare(const void *a, const void *b) // The comparison function for determining
{ // alphabetic ordering.
const Person *const *p1 = a;
const Person *const *p2 = b;
return strcmp((*p1)->name, (*p2)->name); // Compare alphabetically, return result.
}
void SomeFunction(void)
{
qsort(people, numPeople, sizeof(Person *), compare); // Perform the sort.
}
感谢您对此的帮助。