¡Ú·Ç¼¨ÈĤ´ÍøÍѾå¤ÎÃí°Õ¡Û

¡¡¢¨Âê̾¤Ï¶ñÂÎŪ¤Ë¡ª
¡¡¢¨³Ø¹»¤Î²ÝÂê¤Î´ÝÅꤲ¶Ø»ß¡ª
¡¡¢¨¥½¡¼¥¹¤ÎźÉդϡÖHTMLÊÑ´¹¥Ä¡¼¥ë¡×¤Ç»ú²¼¤²¡ª
¡¡¢¨ÊÖ¿®¤Î°úÍѤϺǾ®¸Â¤Ë¡ª
¡¡¢¨´Ä¶­¡ÊOS¤È¥³¥ó¥Ñ¥¤¥é¡Ë¤ä¾É¾õ¤Ï¶ñÂÎŪ¤Ë¾Ü¤·¤¯¡ª
¡¡¢¨¥Þ¥ë¥Á¥Ý¥¹¥È¡Ê¿½ÅÅê¹Æ¡Ë¤Ï¶à¤ó¤Ç¡ª

¡¡¾Ü¤·¤¯¤Ï¤³¤Á¤é



¡¡ËÜÅö¤Ï¤³¤ó¤Ê¤ËÂ礭¤¯½ñ¤­¤¿¤¯¤Ï¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢¤Ê¤«¤Ê¤«¼é¤Ã¤Æ¤¤¤¿¤À¤±¤Ê¤¯¤Æ¡Ä¡£
¡¡¼é¤Ã¤Æ¤¯¤À¤µ¤¤¤Í¡£¤ª´ê¤¤¤·¤Þ¤¹¡£¡Êby´ÉÍý¿Í¡Ë

C¸À¸ì¥½¡¼¥¹¢ÍHTML·Á¼°¥Ä¡¼¥ë¡¡¡¡¡¡·Ç¼¨ÈÄ£²¤Ï¤³¤Á¤é


´ÉÍý¼ÔÍÑ¥á¥Ë¥å¡¼    ¥Ä¥ê¡¼¤ËÌá¤ë    ·ÈÂÓÍÑURL    ¥Û¡¼¥à¥Ú¡¼¥¸    ¥í¥°    ¥¿¥°°ìÍ÷

No.18963

¥¯¥¤¥Ã¥¯¥½¡¼¥È¤Î¥í¥¸¥Ã¥¯¤Ë¤Ä¤¤¤Æ
Åê¹Æ¼Ô---¥¢¥ë¥´¥ê¥º¥àÊÙ¶¯Ãæ(2005/01/02 18:05:09)


¤Ï¤¸¤á¤Þ¤·¤Æ¡£¥¢¥ë¥´¥ê¥º¥àÊÙ¶¯Ãæ¤Ç¤¹¡£
¸½ºß¡¢C¸À¸ì¤Ë¤è¤ë¼ÂÍÑ¥¢¥ë¥´¥ê¥º¥àÆþÌç¤Î42¥Ú¡¼¥¸¤Î¥¯¥¤¥Ã¥¯¥½¡¼¥È¥¢¥ë¥´¥ê¥º¥à¤¬¤ï¤«¤ê¤Þ¤»¤ó¡£°Ê²¼¤Ë¥½¡¼¥¹¤òµ­½Ò¤·¤Þ¤¹¡£
void quick_sort(int d[], int top, int end)
{
    int key, wk, i, j;

    key = d[(top + end) / 2];
    i = top - 1; j = end + 1;
    while (1) {
        while (d[++i] < key)     ­¡
            ;
        while (d[--j] > key)     ­¡
            ;
        if (i >= j) break;
        wk = d[i]; d[i] = d[j]; d[j] = wk;
    }
    if (top < i - 1) quick_sort(d, top, i - 1);
    if (j + 1 < end) quick_sort(d, j + 1, end);
}

¾åµ­¤Î­¡¤ÎÉôʬ¤¬¤É¤Î¤è¤¦¤Ê½èÍý¤ò¹Ô¤Ã¤Æ¤¤¤ë¤Î¤«¤¬¤ï¤«¤ê¤Þ¤»¤ó¡£
¤¿¤È¤¨¤Ð¡¢mainÉôʬ¤Çd[]¤Ë50,30,70,60,90,40,80,10¤òquick_sort´Ø¿ô¤ËÅϤ·¤¿¾ì¹ç¡¢¤É¤Î¤è¤¦¤Ë¥È¥ì¡¼¥¹¤µ¤ì¤ë¤Î¤«¤òÂçÊѶ²½Ì¤Ç¤Ï¤´¤¶¤¤¤Þ¤¹¤¬¶µ¤¨¤Æ¤¤¤¿¤À¤±¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡©

¤è¤í¤·¤¯¤ª´ê¤¤¤¤¤¿¤·¤Þ¤¹¡£


¤³¤ÎÅê¹Æ¤Ë¥³¥á¥ó¥È¤¹¤ë

ºï½ü¥Ñ¥¹¥ï¡¼¥É

ȯ¸À¤Ë´Ø¤¹¤ë¾ðÊó Âê̾ Åê¹ÆÈÖ¹æ Åê¹Æ¼Ô̾ Åê¹ÆÆü»þ
<»Òµ­»ö> Re:¥¯¥¤¥Ã¥¯¥½¡¼¥È¤Î¥í¥¸¥Ã¥¯¤Ë¤Ä¤¤¤Æ 18965 RAPT 2005/01/02 19:41:35


No.18965

Re:¥¯¥¤¥Ã¥¯¥½¡¼¥È¤Î¥í¥¸¥Ã¥¯¤Ë¤Ä¤¤¤Æ
Åê¹Æ¼Ô---RAPT(2005/01/02 19:41:35)


¤½¤ó¤Ê¤â¤ó¡¢¼«Ê¬¤Ç½ÐÎϤ¹¤ì¤Ð¤¤¤¤¤Ç¤·¤ç¤¦¡©

#include <stdio.h>

void put_var(const char *str, int i, int d[], int key)
{
    printf("%.20s\td[%d]=(%d)\tkey(%d)\n", str, i, d[i], key);
}

void quick_sort(int d[], int top, int end)
{
    int key, wk, i, j;

    key = d[(top + end) / 2];
    i = top - 1; j = end + 1;
    for(;;) {
        printf("i = (%d)\n", i);
        ++i;
        put_var("whileÁ°:i", i, d, key);
        while( d[i] < key ){
            put_var("whileÃæ:i", i, d, key);
            ++i;
        }

        printf("j = (%d)\n", j);
        --j;
        put_var("whileÁ°:j", j, d, key);
        while( d[j] > key ){
            put_var("whileÃæ:j", j, d, key);
            --j;
        }

        if (i >= j) break;
        wk = d[i]; d[i] = d[j]; d[j] = wk;
    }
    if (top < i - 1) quick_sort(d, top, i - 1);
    if (j + 1 < end) quick_sort(d, j + 1, end);
}


int main()
{
    int d[] = { 50,30,70,60,90,40,80,10, };
    const int size = sizeof d / sizeof d[0];
    int i;
    
    quick_sort(d, 0, size-1);
    for (i = 0; i < size; i++){
        printf("%d\n", d[i]);
    }
    return 0;
}




¤³¤ÎÅê¹Æ¤Ë¥³¥á¥ó¥È¤¹¤ë

ºï½ü¥Ñ¥¹¥ï¡¼¥É

´ÉÍý¼ÔÍÑ¥á¥Ë¥å¡¼    ¥Ä¥ê¡¼¤ËÌá¤ë    ·ÈÂÓÍÑURL    ¥Û¡¼¥à¥Ú¡¼¥¸    ¥í¥°    ¥¿¥°°ìÍ÷