qsort

Autres langues

Langue: ja

Version: 2003-11-15 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

̾Á°

qsort - ÇÛÎó¤òʤÙÊѤ¨¤ë

½ñ¼°


#include <stdlib.h>



void qsort(void *base, size_t nmemb, size_t size,

int(*compar)(const void *, const void *));

ÀâÌÀ

qsort() ´Ø¿ô¤Ï¡¢ nmemb ¸Ä¤ÎÂ礭¤µ size ¤ÎÍ×ÁǤò¤â¤ÄÇÛÎó¤òʤÙÊѤ¨¤ë¡£ base °ú¤­¿ô¤ÏÇÛÎó¤ÎÀèƬ¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£

compar ¤ò¥Ý¥¤¥ó¥¿¤È¤¹¤ëÈæ³Ó´Ø¿ô¤Ë¤è¤Ã¤Æ¡¢ ÇÛÎó¤ÎÃæ¿È¤Ï¾º½ç (ÃͤÎÂ礭¤¤¤â¤Î¤Û¤É¸å¤ËʤֽçÈÖ) ¤Ëʤ٤é¤ì¤ë¡£ Èæ³Ó´Ø¿ô¤Î°ú¤­¿ô¤ÏÈæ³Ó¤µ¤ì¤ë¤Õ¤¿¤Ä¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£

Èæ³Ó´Ø¿ô¤Ï¡¢Âè°ì°ú¤­¿ô¤¬ÂèÆó°ú¤­¿ô¤ËÂФ·¤Æ¡¢ 1) ¾®¤µ¤¤¡¢2) Åù¤·¤¤¡¢3) Â礭¤¤¤Î¤½¤ì¤¾¤ì¤Ë±þ¤¸¤Æ¡¢ 1) ¥¼¥í¤è¤ê¾®¤µ¤¤À°¿ô¡¢2) ¥¼¥í¡¢3) ¥¼¥í¤è¤êÂ礭¤¤À°¿ô¤Î ¤¤¤º¤ì¤«¤òÊÖ¤µ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ Æó¤Ä¤ÎÍ×ÁǤÎÈæ³Ó·ë²Ì¤¬Åù¤·¤¤¤È¤­¡¢ ʤÙÊѤ¨¤¿¸å¤ÎÇÛÎó¤Ç¤Ï¡¢¤³¤ì¤éÆó¤Ä¤Î½ç½ø¤Ïµ¬Äꤵ¤ì¤Æ¤¤¤Ê¤¤¡£

ÊÖ¤êÃÍ

qsort() ¤ÏÃͤòÊÖ¤µ¤Ê¤¤¡£

½àµò

SVr4, 4.3BSD, C89, C99.

Ãí°Õ

compar °ú¤­¿ô¤Ë»ÈÍѤ¹¤ë¤Î¤ËŬ¤·¤Æ¤¤¤ë¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤È¤·¤Æ¤Ï alphasort(3), versionsort(3) ¤¬¤¢¤ë¡£ C ¤Îʸ»úÎó¤òÈæ³Ó¤¹¤ë¾ì¹ç¡¢°Ê²¼¤ÎÎã¤Ë¤¢¤ë¤è¤¦¤ËÈæ³Ó´Ø¿ô¤Ç strcmp(3) ¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤â¤Ç¤­¤ë¡£

Îã

»ÈÍÑÎã¤Ë¤Ä¤¤¤Æ¤Ï¡¢ bsearch(3) ¤Ë¤¢¤ëÎã¤ò»²¾È¤¹¤ë¤³¤È¡£

°Ê²¼¤Î¥×¥í¥°¥é¥à¤ËÊ̤λÈÍÑÎã¤ò¼¨¤¹¡£¤³¤Î¥×¥í¥°¥é¥à¤Ï¡¢ ¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¤­¿ô¤Ç»ØÄꤵ¤ì¤¿Ê¸»úÎó¤ÎʤӴ¹¤¨¤ò¹Ô¤¦¡£


#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <string.h>

#include <assert.h>



static int

cmpstringp(const void *p1, const void *p2)

{

    /* ¤³¤Î´Ø¿ô¤Î¼ÂºÝ¤Î°ú¤­¿ô¤Ï "char ·¿¤Ø¤Î¥Ý¥¤¥ó¥¿¤Î¥Ý¥¤¥ó¥¿" ¤À¤¬¡¢

       strcmp() ¤Î°ú¤­¿ô¤Ï "char ·¿¤Ø¤Î¥Ý¥¤¥ó¥¿" ¤Ç¤¢¤ë¡£

       ¤½¤³¤Ç¡¢°Ê²¼¤Î¤è¤¦¤Ë¥­¥ã¥¹¥È¤ò¤·¤Æ¤«¤é¥Ý¥¤¥ó¥¿¤ÎµÕ»²¾È¤ò¹Ô¤¦¡£*/



    return strcmp(* (char * const *) p1, * (char * const *) p2);

}



int

main(int argc, char *argv[])

{

    int j;



    assert(argc > 1);



    qsort(&argv[1], argc - 1, sizeof(char *), cmpstringp);



    for (j = 1; j < argc; j++)

        puts(argv[j]);

    exit(EXIT_SUCCESS);

}

´ØÏ¢¹àÌÜ

sort(1), alphasort(3), strcmp(3), versionsort(3)