qsort() to sort an array of structures
개발/프로그래밍2008. 7. 4. 18:28
728x90
#include#include #include /* Define an array of critters to sort. */ struct critter { char *name; char *species; }; struct critter muppets[]= { {"Kermit", "frog"}, {"Piggy", "pig"}, {"Gonzo", "whatever"}, {"Fozzie", "bear"}, {"Sam", "eagle"}, {"Robin", "frog"}, {"Animal", "animal"}, {"Camilla", "chicken"}, {"Sweetums", "monster"}, {"Dr. Strangepork", "pig"}, {"Link Hogthrob", "pig"}, {"Zoot", "human"}, {"Dr. Bunsen Honeydew", "human"}, {"Beaker", "human"}, {"Swedish Chef", "human"}}; int count = sizeof (muppets) / sizeof (struct critter); /* This is the comparison function used for sorting and searching. */ int critter_cmp (const struct critter *c1, const struct critter *c2) { return strcmp (c1->name, c2->name); } /* Print information about a critter. */ void print_critter (const struct critter *c) { printf ("%s, the %s\n", c->name, c->species); } /* Do the lookup into the sorted array. */ void find_critter (char *name) { struct critter target, *result; target.name = name; result = bsearch (&target, muppets, count, sizeof (struct critter), critter_cmp); if (result) print_critter (result); else printf ("Couldn't find %s.\n", name); } /* Main program. */ int main (void) { int i; for (i = 0; i < count; i++) print_critter (&muppets[i]); printf ("\n"); qsort (muppets, count, sizeof (struct critter), critter_cmp); for (i = 0; i < count; i++) print_critter (&muppets[i]); printf ("\n"); find_critter ("Kermit"); find_critter ("Gonzo"); find_critter ("Janice"); return 0; }
원본URL
qsort(dDocs, DocCnt, sizeof(DOCSIM), (void *)desc);
/* 해당 문서를 내림차순(DESC) 으로 정렬 */
int desc(DOCSIM_DIS *p1, DOCSIM_DIS *p2)
{
return p1->Distance - p2->Distance;
}
/* 해당 문서를 오름차순(ASC) 으로 정렬 */
int asc(DOCSIM_DIS *p1, DOCSIM_DIS *p2)
{
return p2->Distance - p1->Distance;
}
728x90
댓글 영역