現在、構造体へのポインターの配列をソートするために、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.
}
これについて助けてくれてありがとう。