////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


    (C)KAB-studio 1999 - 2004 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz

    MF 2004/05/10(Mon) No.256
    zMF 2218 ( Mag2 + Pubzine )
    sF ܂܂ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
/*                QOOSNTPOij̍XV                */
http://www.kab-studio.biz/index.html

EقƂ́[Ɂu 8-3 ؂vǉI ]
@Ol̃zbgn[uɂPbǉ܂B
@́AƎloB
[ Ol̃zbgn[u ]
http://www.kab-studio.biz/Comic/HotHerb/index.html


////////////////////////////////////////////////////////////////////
/*                        储ʂȓL                        */
http://www.kab-studio.biz/nikki2/index.html

2004/05/02 (Sun)
@QxoB͒q悩Be͂ʂ`[jOBC
BꂩقƂ́[`܂B

2004/05/03 (Mon)
@ȂƂقƂ́[`āA炢肵āAPPP܂Ŏd
āB͂POoЁAxoȂ̂ɁccB

2004/05/04 (Tue)
@PO炨ƁBł邩炢B`[jOAEH@
Ȃǂ납ccBPP܂łƁBӔĈLcCccB
C̍ccB̗\B

2004/05/05 (Wed)
@J~Ăŗ\ύXBW[WƂBߌ CLANNAD 
ƁBUkSAC2̂noDBR~bNX͂ǂȂH@CLANNAD zB

2004/05/06 (Thu)
@vԂɎdBs΂x݁BࣕՂ͍N[
PԁH@߂肠ɃI[fBIR^[Ă邱ƂɋCtBoJ
΁B CLANNAD zB

2004/05/07 (Fri)
@P`[jOA܂Ƃ߂ƑQč쐬AoOB
Ă͂QAxA̗\BقƂ́[O`Q`Bx̃R~Pɂ
KAB-studio.ROM ͏o܂B

2004/05/08 (Sat)
@ CLANNAD ȂB̋ʂЂƂƉBViIĉ݁B
Ƃ̋߂̋gƂł؊pς̂B CLANNAD z͓LɂāB


////////////////////////////////////////////////////////////////////
/*                         A                             */
http://www.kab-studio.biz/Novel/Fuga/index.html

@\́@Ɩ@@|T|

ucOȂv
@ƂĂcOł͂ȂŐԗt͂AtpȂB
u̔\͂͑̌nĂĂȂALĂȂB䂪
gɏh͂AƎŎ󂯌p̂v
@āA傫ߑB
uccƂāAâ邱Ƃɕs킯ł͂Ȃȁv
@ƁA܂񂾖ڂŁA镑B
uA[Ɓcc̖AƎvoƂvo
ƂāAŁccv
uccLƂɒӂȂ΁A悢v
úA͂Iv
@͐^ʖڂȊł͂ƕԎB
uāccpAƂ͂Ȃɂ́v
upAłccHv
@AƐuƕԓɍBԗtľtŌȂÂ͌
\͂B
uȃC[WƂẮcc@ƂA\͂̂悤ȁAI
̂Ǝv܂BȂƂAɂƂāA𑀂ƂƂ͂
Ƃłv
uł낤ȁB܂߂āAp̂͌X̔\͂X󂯌p
łB𑀂p͗c茭ƂłBA͏p̖{
Ƃ͈قȂv
@ԗt͎AB
w邫A䂪ӂ݂ė͂ƐA̎p𑝂Az𗽂͂
Ix
@ľtł͂ȂAɂ͉ƁA邫̉Fu
B
uccv
                                                              ()


////////////////////////////////////////////////////////////////////
/*                       #pragma twice                            */
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

@Version 13.20
}[W\[gEėp

uO̓}[W\[gɂĐ܂v
włNCbN\[g݂Ƀ^CɂȂ͖̂ʓ|ˁ[x
uƂ킯ŁAėpIɎg}[W\[gpӂ܂v

// z̗vfɂ\́B
struct SORT_DATA
{
    int m_iIndex;
    CString m_cDataStr;
};

// rp֐B
// p_pL > p_pR Ȃ true A
// ȊO false Ԃ悤ɂĂB
bool CompareToForSORT_DATA( void *p_pL, void *p_pR )
{
    SORT_DATA *pstSortDataL = (SORT_DATA *)p_pL;
    SORT_DATA *pstSortDataR = (SORT_DATA *)p_pR;

    // l݂̂Ŕr܂B
    if( pstSortDataL->m_iIndex > pstSortDataR->m_iIndex )
    {
        return true;
    }

    return false;
}

void DoMergeSort( SORT_DATA **p_ppstAry, int p_iSize )
{
    if( p_iSize <= 1 )
    {
        // vfPȉȂ牽܂B
        return;
    }

    // 獶̃TCY擾܂B
    int iLeftSize = p_iSize / 2;
    // ẼTCY擾܂B
    int iRightSize = p_iSize - iLeftSize;
    // 獶̃TCY̔z쐬܂B
    SORT_DATA **ppstLeftAry = new SORT_DATA*[iLeftSize];
    // ẼTCY̔z쐬܂B
    SORT_DATA **ppstRightAry = new SORT_DATA*[iRightSize];
    // ꂼRs[܂B
    int iF1;
    for( iF1 = 0; iF1 < iLeftSize; ++iF1 )
    {
        ppstLeftAry[iF1] = p_ppstAry[iF1];
    }
    
    for( iF1 = 0; iF1 < iRightSize; ++iF1 )
    {
        ppstRightAry[iF1] = p_ppstAry[iLeftSize + iF1];
    }

    // ꂼċAĂяo܂B
    DoMergeSort( ppstLeftAry, iLeftSize );
    DoMergeSort( ppstRightAry, iRightSize );

    // }[W܂B
    int iLeftPos = 0;
    int iRightPos = 0;
    while(
        ( iLeftPos  < iLeftSize  ) || 
        ( iRightPos < iRightSize )
        )
    {
        // EƂz̒ɂԁA[v܂B

        if( iRightSize <= iRightPos )
        {
            // Ez̍Ō܂ŗĂꍇB
            // ǉ܂B
            p_ppstAry[iLeftPos + iRightPos] = ppstLeftAry[iLeftPos];
            ++iLeftPos;
        }
        else if( iLeftSize <= iLeftPos )
        {
            // z̍Ō܂ŗĂꍇB
            // Eǉ܂B
            p_ppstAry[iLeftPos + iRightPos] = ppstRightAry[iRightPos];
            ++iRightPos;
        }
        else if
            ( CompareToForSORT_DATA
                ( ppstLeftAry[iLeftPos]
                , ppstRightAry[iRightPos] 
                ) 
            )
          {
            // ̕E傫ꍇB
            // Eǉ܂B
            p_ppstAry[iLeftPos + iRightPos] = ppstRightAry[iRightPos];
            ++iRightPos;
          }
          else
        {
            // ȊȌꍇi̕E菬ꍇjB
            // ǉ܂B
            p_ppstAry[iLeftPos + iRightPos] = ppstLeftAry[iLeftPos];
            ++iLeftPos;
        }
    }

    // ܂B
    delete[] ppstLeftAry;
    delete[] ppstRightAry;
}

wccǁAOƂقƂǓˁBrp֐炢x
ugp͂v

void Use_DoMergeSort()
{
    SORT_DATA *ppstAry[5];
    ppstAry[0] = new SORT_DATA;
    ppstAry[0]->m_iIndex = 9;
    ppstAry[0]->m_cDataStr = "EEE";
    ppstAry[1] = new SORT_DATA;
    ppstAry[1]->m_iIndex = 3;
    ppstAry[1]->m_cDataStr = "DDD";
    ppstAry[2] = new SORT_DATA;
    ppstAry[2]->m_iIndex = 1;
    ppstAry[2]->m_cDataStr = "CCC";
    ppstAry[3] = new SORT_DATA;
    ppstAry[3]->m_iIndex = 3;
    ppstAry[3]->m_cDataStr = "BBB";
    ppstAry[4] = new SORT_DATA;
    ppstAry[4]->m_iIndex = 5;
    ppstAry[4]->m_cDataStr = "AAA";

    // \[g܂B
    DoMergeSort( ppstAry, 5 );

    for( int iF1 = 0; iF1 < 5; ++iF1 )
    {
        TRACE
            ( "%d, %s\n"
            , ppstAry[iF1]->m_iIndex
            , ppstAry[iF1]->m_cDataStr 
            );
        // new ō̂ delete ŉ܂B
        delete ppstAry[iF1];
    }
}

usʂ͂v

1, CCC
3, DDD
3, BBB
5, AAA
9, EEE

wAƈ\[gɂȂĂIx
u}[W\[g͈\[gA\̂NX̃\[gɎgƂ
ƎvāA͍\̂ɂĂ݂܂v
włĊSɔėpIAĂ킯ȂˁB SORT_DATA ̃|C
^̃|C^Ȃ񂾂x
uˁAgɂ͂ƏCKvȁBłrp֐v

bool CompareToForSORT_DATA( void *p_pL, void *p_pR )

wA void |C^x
uA̕ӂ̌^͋CɂKvȂBrp֐̒gƂς
ΉɂłgƎvv
wrp֐āAOɋ̂ƓHx
u Version 13.09 ( No.245 ) ƓA̕傫 true A
O false v
w qsort() Ƃ͈Ⴄ񂾂ˁx
u̔rp֐́AȃvOɂāAꂼdlႤ
炿ƔɂB qsort() ̎dlɍ킹Ă̂
Ǝvv
wɈႢĂHx
u͑OƓBASY̓ArĂPӏrp
֐ɒuv
w΁A qsort() ݂ void |C^󂯎Ăӂ
ɂ͂łȂ́Hx
ułȂ͂ȂǁAvf̃TCYnȂႢȂv
wAx
u^΁Avf̃TCY͓nȂčςނˁBɁA܂Ŕ
pKv͂ȂȁAJu邾ōςނv
w[Ɓccrp֐ɓnĂłHx
u͊ȒPɂłB܂ASŸv

void DoMergeSort
    ( SORT_DATA **p_ppstAry, int p_iSize
    , bool ( *p_pfnComparetor)( void *p_pL, void *p_pR )
    )

uĂāAċAĂяóv

    // ꂼċAĂяo܂B
    DoMergeSort( ppstLeftAry, iLeftSize, p_pfnComparetor );
    DoMergeSort( ppstRightAry, iRightSize, p_pfnComparetor );

uۂɔrp֐Ăłӏ́v

        else if
            ( p_pfnComparetor
                ( ppstLeftAry[iLeftPos]
                , ppstRightAry[iRightPos] 
                ) 
            )

uĂ΁AƂ́v

    // \[g܂B
    DoMergeSort( ppstAry, 5, CompareToForSORT_DATA );

ułnjv
w[x
û炢ėp΁ÂƂɂ͎g邩ȁv

/*
    Preview Next Story!
*/
w̔ėp\[gΏ\Ċˁ[x
uƂ킯Ń\[g҂͎ōŌv
wIx
uƂ킯Ŏv
 Version 13.21 \[ĝ܂Ƃ 
wɂÂIx
ułASY҂͂܂ˁ[v
wQO˔jccx


////////////////////////////////////////////////////////////////////
/*                QOOSNTPVij̍XV                */
http://www.kab-studio.biz/index.html

EقƂ́[ɂPbǉ\
@قƂ́[ɂPbǉ\BT͂QbȂƂȂccB


////////////////////////////////////////////////////////////////////
/*                          ӁII                            */

Ẽ[ԐMȂłB
EӌE]Ez[`[ʂȓL]肨肭B
http://www.kab-studio.biz/nikki2/
EwǓo^Ƃɂ͂̃y[WōsȂĂB
http://www.mag2.com/m/0000012198.htm
E͎ōsȂĂB
EobNio[͂̃y[Wɂ܂B
http://backno.mag2.com/reader/Back?id=0000012198
http://www.kab-studio.biz/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*
    KAB-studio.h
      Weekly Mail Magazine.
      Written by Kaburaya Seiden.
      http://www.kab-studio.biz/Info/MailMagazine/

    (C)KAB-studio 1999 - 2004 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz
*/
////////////////////////////////////////////////////////////////////

