見出し画像

解説クラスCopyClear(4)

解説クラスCopyClear(4)


2024年2月27初講(初稿)

この講義は解説『解説クラスCopyClear(3)』
の続きです!

(4-8)ソート関数「Sort()」系

                                                    // ソーティング:データソート
    int     Sort(                                   // TypeArrayソート
                int             sw,                 // 0:昇順、1:降順
                TypeArray       *pa,                // 配列1~100の情報
                int             n );                // 配列の個数 1..100
    void    Sort(                                   // 配列ソート:BYTE
                int             sw,                 // 0:昇順、 1:降順
                BYTE            buf[],              // バッファー
                int             size );             // バッファーサイズ
    void    Sort(                                   // 配列ソート:short
                int             sw,                 // 0:昇順、 1:降順
                short           buf[],              // バッファー
                int             size );             // バッファーサイズ
    void    Sort(                                   // 配列ソート:long
                int             sw,                 // 0:昇順、 1:降順
                long            buf[],              // バッファー
                int             size );             // バッファーサイズ
    void    Sort(                                   // 配列ソート:int
                int             sw,                 // 0:昇順、 1:降順
                int             buf[],              // バッファー
                int             size );             // バッファーサイズ
    void    Sort(                                   // 配列ソート:float
                int             sw,                 // 0:昇順、 1:降順
                float           buf[],              // バッファー
                int             size );             // バッファーサイズ
    void    Sort(                                   // 配列ソート:double
                int             sw,                 // 0:昇順、 1:降順
                double          buf[],              // バッファー
                int             size );             // バッファーサイズ
    void    Sort(                                   // 配列ソート:64Bit整数
                int             sw,                 // 0:昇順、 1:降順
                __int64         buf[],              // バッファー
                int             size );             // バッファーサイズ
    void    Sort(                                   // 配列ソート:TypeCorr
                int             sw,                 // 0:昇順、 1:降順
                TypeCorr        buf[],              // バッファー
                int             size );             // バッファーサイズ
    void    Sort(                                   // 配列ソート:TypeCorrIX
                int             sw,                 // 0:昇順、 1:降順
                TypeCorrIX      buf[],              // バッファー
                int             size );             // バッファーサイズ
    void    SortX(                                  // 配列ソート:TypeXY:X座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXY          buf[],              // バッファー
                int             size                // バッファーサイズ
            );
    void    SortY(                                  // 配列ソート:TypeXY:Y座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXY          buf[],              // バッファー
                int             size                // バッファーサイズ
            );
    void    SortX(                                  // 配列ソート:TypeXYF:X座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXYF         buf[],              // バッファー
                int             size                // バッファーサイズ
            );
    void    SortY(                                  // 配列ソート:TypeXYF:Y座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXYF         buf[],              // バッファー
                int             size                // バッファーサイズ
            );
    void    SortX(                                  // 配列ソート:TypeXYD:X座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXYD         bufD[],             // バッファー
                int             size                // バッファーサイズ
            );
    void    SortY(                                  // 配列ソート:TypeXYD:Y座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXYD         bufD[],             // バッファー
                int             size                // バッファーサイズ
            );
    void    SortX(                                  // 配列ソート:TypeXYHV:X座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXYHV        buf[],              // バッファー
                int             size                // バッファーサイズ
            );
    void    SortY(                                  // 配列ソート:TypeXYHV:Y座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXYHV        buf[],              // バッファー
                int             size                // バッファーサイズ
            );
    void    SortX(                                  // 配列ソート:TypeXYHVIX:X座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXYHVIX      buf[],              // バッファー
                int             size                // バッファーサイズ
            );
    void    SortY(                                  // 配列ソート:TypeXYHVIX:Y座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXYHVIX      buf[],              // バッファー
                int             size                // バッファーサイズ
            );
    void    SortArea(                               // 配列ソート:TypeSf:面積ソート
                int             sw,                 // 0:昇順、 1:降順
                TypeSf          bufS[],             // バッファー
                int             size                // バッファーサイズ
            );
    void    SortArea(                               // 配列ソート:TypeMB:面積ソート
                int             sw,                 // 0:昇順、 1:降順
                TypeMB          bufM[],             // バッファー
                int             size                // バッファーサイズ
            );

                                                    // ソーティング:16bitIndex付きソート
    int     SortIndex(                              // キー付ソート:BYTE
                int         sw,                     // 0:Key昇順、 1:Key降順
                BYTE        bufkey[],               // キー部のバッファー
                short       bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );
    int     SortIndex(                              // キー付ソート:short
                int         sw,                     // 0:Key昇順、 1:Key降順
                short       bufkey[],               // キー部のバッファー
                short       bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );
    int     SortIndex(                              // キー付ソート:long
                int         sw,                     // 0:Key昇順、 1:Key降順
                long        bufkey[],               // キー部のバッファー
                short       bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );
    int     SortIndex(                              // キー付ソート:long
                int         sw,                     // 0:Key昇順、 1:Key降順
                int         bufkey[],               // キー部のバッファー
                short       bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );
    int     SortIndex(                              // キー付ソート:float
                int         sw,                     // 0:Key昇順、 1:Key降順
                float       bufkey[],               // キー部のバッファー
                short       bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );
    int     SortIndex(                              // キー付ソート:double
                int         sw,                     // 0:Key昇順、 1:Key降順
                double      bufkey[],               // キー部のバッファー
                short       bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );
    int     SortIndex(                              // キー付ソート:64Bit整数
                int         sw,                     // 0:Key昇順、 1:Key降順
                __int64     bufkey[],               // キー部のバッファー
                short       bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );

                                                    // ソーティング:32bitIndex付きソート
    int     SortIndex(                              // キー付ソート:BYTE
                int         sw,                     // 0:Key昇順、 1:Key降順
                BYTE        bufkey[],               // キー部のバッファー
                int         bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );
    int     SortIndex(                              // キー付ソート:short
                int         sw,                     // 0:Key昇順、 1:Key降順
                short       bufkey[],               // キー部のバッファー
                int         bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );
    int     SortIndex(                              // キー付ソート:long
                int         sw,                     // 0:Key昇順、 1:Key降順
                long        bufkey[],               // キー部のバッファー
                int         bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );
    int     SortIndex(                              // キー付ソート:long
                int         sw,                     // 0:Key昇順、 1:Key降順
                int         bufkey[],               // キー部のバッファー
                int         bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );
    int     SortIndex(                              // キー付ソート:float
                int         sw,                     // 0:Key昇順、 1:Key降順
                float       bufkey[],               // キー部のバッファー
                int         bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );
    int     SortIndex(                              // キー付ソート:double
                int         sw,                     // 0:Key昇順、 1:Key降順
                double      bufkey[],               // キー部のバッファー
                int         bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );
    int     SortIndex(                              // キー付ソート:64Bit整数
                int         sw,                     // 0:Key昇順、 1:Key降順
                __int64     bufkey[],               // キー部のバッファー
                int         bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );

                                                    // 並替後処理:16bitIndex付きソート
    int     SortCopy(                               // ソート後添え字で並び替え
                TypeArray   *pa,                    // 配列1~10の情報
                int         n,                      // 配列の個数 0..99
                short       bufix[],                // 添字部のBuffer
                int         offset,                 // 先頭からのOffset
                int         l                       // 配列の最小大きさ
            );
    int     SortCopy(                               // Sort後添字で並び替え:BYTE
                BYTE        buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並替え:short
                short       buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並び替え:int
                int         buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並び替え:float
                float       buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並替:double
                double      buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並替:64Bit整数
                __int64     buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並替:void*
                void*       buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並替:TypeXY
                TypeXY      buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並替:TypeXYI
                TypeXYI     buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並替:TypeXYHV
                TypeXYHV    buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
                                                    // 並替後処理:32bitIndex付きソート
    int     SortCopy(                               // ソート後添え字で並び替え
                TypeArray   *pa,                    // 配列1~10の情報
                int         n,                      // 配列の個数 0..99
                int         bufix[],                // 添字部のBuffer
                int         offset,                 // 先頭からのOffset
                int         l                       // 配列の最小大きさ
            );
    int     SortCopy(                               // Sort後添字で並び替え:BYTE
                BYTE        buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並替え:short
                short       buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並び替え:int
                int         buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並び替え:float
                float       buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並替:double
                double      buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並替:64Bit整数
                __int64     buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並替:void*
                void*       buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並替:TypeXY
                TypeXY      buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並替:TypeXYI
                TypeXYI     buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
    int     SortCopy(                               // Sort後添字で並替:TypeXYHV
                TypeXYHV    buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );
void    SortUpdate(                             // ソート(1Data更新):BYTE
            int         sw,                     // 0:昇順、 1:降順
            BYTE        buf[],                  // バッファー
            int         size,                   // バッファーサイズ
            int         d );                    // データ
void    SortUpdate(                             // ソート(1Data更新):short
            int         sw,                     // 0:昇順、 1:降順
            short       buf[],                  // バッファー
            int         size,                   // バッファーサイズ
            int         d );                    // データ
void    SortUpdate(                             // ソート(1Data更新):int
            int         sw,                     // 0:昇順、 1:降順
            int         buf[],                  // バッファー
            int         size,                   // バッファーサイズ
            int         d );                    // データ
void    SortUpdate(                             // ソート(1Data更新):float
            int         sw,                     // 0:昇順、 1:降順
            float       buf[],                  // バッファー
            int         size,                   // バッファーサイズ
            double      d );                    // データ
void    SortUpdate(                             // ソート(1Data更新):double
            int         sw,                     // 0:昇順、 1:降順
            double      buf[],                  // バッファー
            int         size,                   // バッファーサイズ
            double      d );                    // データ

void    SortUpdate(                             // ソート(1Data更新):TypeCorr
            int         sw,                     // 0:昇順、 1:降順
            TypeCorr    buf[],                  // バッファー
            int         size,                   // バッファーサイズ
            double      d,                      // データ
            int         x,                      // X座標
            int         y );                    // Y座標

void    SortMerge(                              // ソート(併合):BYTE
            int         sw,                     // 0:昇順、 1:降順
            BYTE        buf1[],                 // バッファー:1
            BYTE        buf2[],                 // バッファー:2
            BYTE        buf[],                  // バッファー:格納先
            int         size1,                  // バッファーサイズ:1
            int         size2 );                // バッファーサイズ:2
void    SortMerge(                              // ソート(併合):short
            int         sw,                     // 0:昇順、 1:降順
            short       buf1[],                 // バッファー:1
            short       buf2[],                 // バッファー:2
            short       buf[],                  // バッファー:格納先
            int         size1,                  // バッファーサイズ:1
            int         size2 );                // バッファーサイズ:2
void    SortMerge(                              // ソート(併合):int
            int         sw,                     // 0:昇順、 1:降順
            int         buf1[],                 // バッファー:1
            int         buf2[],                 // バッファー:2
            int         buf[],                  // バッファー:格納先
            int         size1,                  // バッファーサイズ:1
            int         size2 );                // バッファーサイズ:2
void    SortMerge(                              // ソート(併合):float
            int         sw,                     // 0:昇順、 1:降順
            float       buf1[],                 // バッファー:1
            float       buf2[],                 // バッファー:2
            float       buf[],                  // バッファー:格納先
            int         size1,                  // バッファーサイズ:1
            int         size2 );                // バッファーサイズ:2
void    SortMerge(                              // ソート(併合):double
            int         sw,                     // 0:昇順、 1:降順
            double      buf1[],                 // バッファー:1
            double      buf2[],                 // バッファー:2
            double      buf[],                  // バッファー:格納先
            int         size1,                  // バッファーサイズ:1
            int         size2 );                // バッファーサイズ:2

void    SortMerge(                              // ソート(併合):TypeCorr
            int         sw,                     // 0:昇順、 1:降順
            TypeCorr    buf1[],                 // バッファー:1
            TypeCorr    buf2[],                 // バッファー:2
            TypeCorr    buf[],                  // バッファー:格納先
            int         size1,                  // バッファーサイズ:1
            int         size2 );                // バッファーサイズ:2
    int     SortMult(                               // 複数配列ソート:個数小(~32767)
                int         sw,                     // 0:昇順、1:降順
                TypeArray   *pkey,                  // 配列情報:キー
                TypeArray   *pa,                    // 配列情報:従属
                int         n,                      // 配列個数 1..100
                int         offset,                 // 先頭からのOffset
                int         l                       // 配列のサイズ
            );
    int     SortMultLarge(                          // 複数配列ソート:個数大(32768~)
                int         sw,                     // 0:昇順、1:降順
                TypeArray   *pkey,                  // 配列情報:キー
                TypeArray   *pa,                    // 配列情報:従属
                int         n,                      // 配列個数 1..100
                int         offset,                 // 先頭からのOffset
                int         l                       // 配列のサイズ
            );
    int     MultSorting(                            // マルチソート
                BYTE        *ptrsw,                 // 0:昇順、1:降順
                TypeArray   *pa,                    // 配列1~100の情報
                int         n                       // 配列の個数 1..100
            );
    int     MultSortingShort(                       // MultSort:short単位配列群
                BYTE        *ptrsw,                 // 0:昇順、1:降順
                short       **pa,                   // 配列1~100の情報
                int         n,                      // 配列の個数 1..100
                int         l                       // 配列のサイズ
            );

    void    ConvertXY2int(                          // TypeXY→int
                TypeXY      xy[],                   //  元のTypeXYバッファー
                int         buf[],                  //  変換先のintバッファー
                int         size,                   //  バッファーサイズ
                int         mode=1 );               //  モード
                                                    //   0:XY→int
                                                    //   1:YX→int(省略時)
    void    ConvertXYHV2int(                        // TypeXYHV→int
                TypeXYHV    xy[],                   //  元のTypeXYHVバッファー
                int         buf[],                  //  変換先のintバッファー
                int         size,                   //  バッファーサイズ
                int         mode=1,                 //  モード
                                                    //   0:XY→int
                                                    //   1:YX→int(省略時)
                                                    //   2:HV→int
                                                    //   3:VH→int
                                                    //   4:YV→int
                int         inc=0 );                //  増加幅(0:省略時目印)

    int     BinarySearchX(                          // 2分探査:X座標
                TypeXY      buf[],                  //  バッファー
                int         size,                   //  バッファーサイズ
                int         x );                    //  探査対象
    int     BinarySearchY(                          // 2分探査:Y座標
                TypeXY      buf[],                  //  バッファー
                int         size,                   //  バッファーサイズ
                int         y );                    //  探査対象
    int     BinarySearchX(                          // 2分探査:X座標
                TypeXYF     buf[],                  //  バッファー
                int         size,                   //  バッファーサイズ
                double      x );                    //  探査対象
    int     BinarySearchY(                          // 2分探査:Y座標
                TypeXYF     buf[],                  //  バッファー
                int         size,                   //  バッファーサイズ
                double      y );                    //  探査対象
    int     BinarySearchX(                          // 2分探査:X座標
                TypeXYD     buf[],                  //  バッファー
                int         size,                   //  バッファーサイズ
                double      x );                    //  探査対象
    int     BinarySearchY(                          // 2分探査:Y座標
                TypeXYD     buf[],                  //  バッファー
                int         size,                   //  バッファーサイズ
                double      y );                    //  探査対象

これだけ、関連する関数を用意しました!
ご存知の様にソート「Sort」は、英単語「Sort」は、
意味「分類する、仕分けする」・コンピューターサイエンス
的にはデータを並べ替える基本操作です!
基本的な操作なのでクラス「CopyClear」に入れる事が、
相応しいと判断し、ここに入れました!
★備考★
一目、観て頂いて分かるように多重定義で関数名「sort()」
や「sortX()」・「sortY()」・「sortArea()」・
「sortIndex()」・・・等と「()」内の引数や関数結果自体
の値の型「void 」・「int 」が異なると多重定義関数が多
い事に注意して下さい!
★理由★名前を考える事が難しいと考えたからです!

(4-8-1)ソート関数「int Sort(int sw,
TypeArray* pa,int n);」

    int     Sort(                                   // TypeArrayソート
                int             sw,                 // 0:昇順、1:降順
                TypeArray       *pa,                // 配列1~100の情報
                int             n );                // 配列の個数 1..100

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeArray* 」や、「BYTE buf[]」≫などが出るパターン
は稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と
馴染みが無いにも程が有る英単語しか無いので仕方が無い
から「最初の引数」に切り替えスイッチを置く事に
しました!
仮引数「TypeArray* pa,」は、画像では無く一次元配列を
しかも複数指定できる事を目的
★注意★元々、ADS社画像処理装置に搭載した
インタプリタ言語PIPLで配列データを使う為の仕組み
として構造体「TypeArray* 」を使用していた名残です!
★備考★PIPLも私の計画としては、新しく画像処理専用
言語として発表する心算ですので乞うご期待と記載して置き
ます!
仮引数「int n」は、仮引数「TypeArray* pa,」で示される
ポインタでデータ配列が有る事は理解していると思いますが
その配列が何組あるかを示す数が、この「int n」です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」及
びファイル「CopyClear120.cpp」が
対象】します!

(4-8-2)ソート関数「int Sort(int sw,
BYTE buf[],int size);」

    void    Sort(                                   // 配列ソート:BYTE
                int             sw,                 // 0:昇順、 1:降順
                BYTE            buf[],              // バッファー
                int             size );             // バッファーサイズ

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「BYTE buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「BYTE buf[],」は、一次元のデータ配列でデータの
単位が「BYTE型」1バイト符号無しです!
仮引数「int size」は、仮引数「BYTE buf[],」の配列の
サイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-3)ソート関数「int Sort(int sw,
short buf[],int size);」

    void    Sort(                                   // 配列ソート:short
                int             sw,                 // 0:昇順、 1:降順
                short           buf[],              // バッファー
                int             size );             // バッファーサイズ

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「short buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「short buf[],」は、一次元のデータ配列でデータの
単位が「short型」2バイト符号有りです!
仮引数「int size」は、仮引数「short buf[],」の配列の
サイズです!このサイズ分のデータをソーティング(並べ替
え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-4)ソート関数「void Sort(int sw,
long buf[],int size);」

    void    Sort(                                   // 配列ソート:long
                int             sw,                 // 0:昇順、 1:降順
                long            buf[],              // バッファー
                int             size );             // バッファーサイズ

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「long buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「long buf[],」は、一次元のデータ配列でデータの
単位が「long型」4バイト符号有りです!
仮引数「int size」は、仮引数「long buf[],」の配列の
サイズです!このサイズ分のデータをソーティング(並べ替
え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-5)ソート関数「void Sort(int sw,
int buf[],int size);」

    void    Sort(                                   // 配列ソート:int
                int             sw,                 // 0:昇順、 1:降順
                int             buf[],              // バッファー
                int             size );             // バッファーサイズ

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「int buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「int buf[],」は、一次元のデータ配列でデータの
単位が「int型」4バイト符号有りです!
仮引数「int size」は、仮引数「int buf[],」の配列の
サイズです!このサイズ分のデータをソーティング(並べ替
え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-6)ソート関数「void Sort(int sw,
float buf[],int size);」

    void    Sort(                                   // 配列ソート:float
                int             sw,                 // 0:昇順、 1:降順
                float           buf[],              // バッファー
                int             size );             // バッファーサイズ

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「float buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「float buf[],」は、一次元のデータ配列でデータの
単位が「float型」4バイト単精度浮動小数点実数型です!
仮引数「int size」は、仮引数「float buf[],」の配列の
サイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-7)ソート関数「void Sort(int sw,
double buf[],int size);」

    void    Sort(                                   // 配列ソート:double
                int             sw,                 // 0:昇順、 1:降順
                double          buf[],              // バッファー
                int             size );             // バッファーサイズ

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「double buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「double buf[],」は、一次元のデータ配列で
データの単位が「double 型」8バイト倍精度浮動小数点
実数型です!
仮引数「int size」は、仮引数「double buf[],」の配列の
サイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-8)ソート関数「void Sort(int sw,
__int64 buf[],int size);」

    void    Sort(                                   // 配列ソート:64Bit整数
                int             sw,                 // 0:昇順、 1:降順
                __int64         buf[],              // バッファー
                int             size );             // バッファーサイズ

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「__int64 buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「__int64 buf[],」は、一次元のデータ配列で
データの単位が「__int64型」8バイト64ビット整数型
です!
仮引数「int size」は、仮引数「__int64 buf[],」の配列の
サイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★注意★「int 64型」は、VSで見つけたので使用しま
したが、ヒョットシテ他のコンパイラシステムでは使え無い
かも知れません!
ナンセ「__」始まりは異様過ぎるので・・・
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-9)ソート関数「void Sort(int sw,
TypeCorr buf[],int size);」

    void    Sort(                                   // 配列ソート:TypeCorr
                int             sw,                 // 0:昇順、 1:降順
                TypeCorr        buf[],              // バッファー
                int             size );             // バッファーサイズ

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeCorr buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「TypeCorr buf[],」は、一次元のデータ配列でデータ
の単位が「TypeCorr型」と画像処理で得られるデータ相関値
を扱うデータです!
仮引数「int size」は、仮引数「TypeCorr buf[],」の配列の
サイズです!このサイズ分のデータをソーティング(並べ替
え)します!
★注意★「TypeCorr型」は、画像を比較する用途で使用する
相関値「解説『解説クラスSupport』で解説した!
構造体「struct TypeCorr{}」です!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-10)ソート関数「void Sort(int sw,
TypeCorrIX buf[],int size);」

    void    Sort(                                   // 配列ソート:TypeCorrIX
                int             sw,                 // 0:昇順、 1:降順
                TypeCorrIX      buf[],              // バッファー
                int             size );             // バッファーサイズ

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeCorrIXbuf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「TypeCorrIXbuf[],」は、一次元のデータ配列で
データの単位が「TypeCorrIX型」と画像処理で得られる
データ相関値を扱うデータです!
仮引数「int size」は、仮引数「TypeCorrIXbuf[],」の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★注意★「TypeCorrIX型」は、画像を比較する用途で使用
する相関値「解説『解説クラスSupport』で解説し
た!
構造体「struct TypeCorrIX{}」です!
★備考★構造体「struct TypeCorr{}」との違いは、他の
データとのリンク用インデックス情報が付加されている事
です!
★備考★尚、構造体「TypeCorrIX型」の座標を示す値は、
short型です!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-11)ソート関数「void SortX(int sw,
TypeXY buf[],int size);」

    void    SortX(                                  // 配列ソート:TypeXY:X座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXY          buf[],              // バッファー
                int             size                // バッファーサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeXY buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「TypeXY buf[],」は、一次元のデータ配列でデータ
の単位が「TypeXY 型」と画像処理で使用するXY座標組
データです!
仮引数「int size」は、仮引数「TypeXY buf[],」の配列の
サイズです!
このサイズ分のデータをソーティング(並べ替え)します!
★注意★XY座標組データをコノ関数SortX()で比較する
時はX座標の大小で比較し、X座標が同じならばY座標の
大小で比較と二段階に成ります!
★備考★尚、構造体「TypeXY 型」の座標を示す値は、
short型です!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-12)ソート関数「void SortY(int sw,
TypeXY buf[],int size);」

    void    SortY(                                  // 配列ソート:TypeXY:Y座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXY          buf[],              // バッファー
                int             size                // バッファーサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeXY buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「TypeXY buf[],」は、一次元のデータ配列でデータ
の単位が「TypeXY 型」と画像処理で使用するXY座標組
データです!
仮引数「int size」は、仮引数「TypeXY buf[],」の配列の
サイズです!
このサイズ分のデータをソーティング(並べ替え)します!
★注意★XY座標組データをコノ関数SortY()で比較する
時はY座標の大小で比較し、Y座標が同じならばX座標の
大小で比較と二段階に成ります!
★備考★尚、構造体「TypeXY 型」の座標を示す値は、
short型です!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-13)ソート関数「void SortX(int sw,
TypeXYF buf[],int size);」

    void    SortX(                                  // 配列ソート:TypeXYF:X座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXYF         buf[],              // バッファー
                int             size                // バッファーサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeXYF buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「TypeXY Fbuf[],」は、一次元のデータ配列で
データの単位が「TypeXY F型」と画像処理で使用する
XY座標組データです!
仮引数「int size」は、仮引数「TypeXYF buf[],」の配列の
サイズです!
このサイズ分のデータをソーティング(並べ替え)します!
★注意★XY座標組データをコノ関数SortX()で比較する
時はX座標の大小で比較し、X座標が同じならばY座標の
大小で比較と二段階に成ります!
★備考★尚、構造体「TypeXYF型」の座標を示す値は、
float型です!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-14)ソート関数「void SortY(int sw,
TypeXYF buf[],int size);」

    void    SortY(                                  // 配列ソート:TypeXYF:Y座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXYF         buf[],              // バッファー
                int             size                // バッファーサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeXYF buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「TypeXYF buf[],」は、一次元のデータ配列で
データの単位が「TypeXYF型」と画像処理で使用する
XY座標組データです!
仮引数「int size」は、仮引数「TypeXYF buf[],」の配列の
サイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★注意★XY座標組データをコノ関数SortY()で比較する
時はY座標の大小で比較し、Y座標が同じならばX座標の
大小で比較と二段階に成ります!
★備考★尚、構造体「TypeXY F型」の座標を示す値は、
float型です!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-15)ソート関数「void SortX(int sw,
TypeXYD buf[],int size);」

    void    SortX(                                  // 配列ソート:TypeXYD:X座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXYD         bufD[],             // バッファー
                int             size                // バッファーサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeXYD buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「TypeXYD buf[],」は、一次元のデータ配列で
データの単位が「TypeXYD型」と画像処理で使用する
XY座標組データです!
仮引数「int size」は、仮引数「TypeXYD buf[],」の配列の
サイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★注意★XY座標組データをコノ関数SortX()で比較する
時はX座標の大小で比較し、X座標が同じならばY座標の
大小で比較と二段階に成ります!
★備考★尚、構造体「TypeXYD型」の座標を示す値は、
double 型です!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-16)ソート関数「void SortY(int sw,
TypeXYD buf[],int size);」

    void    SortY(                                  // 配列ソート:TypeXYD:Y座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXYD         bufD[],             // バッファー
                int             size                // バッファーサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeXYD buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「TypeXYD buf[],」は、一次元のデータ配列で
データの単位が「TypeXYD型」と画像処理で使用する
XY座標組データです!
仮引数「int size」は、仮引数「TypeXYD buf[],」の配列の
サイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★注意★XY座標組データをコノ関数SortY()で比較する
時はY座標の大小で比較し、Y座標が同じならばX座標の
大小で比較と二段階に成ります!
★備考★尚、構造体「TypeXYD型」の座標を示す値は、
double 型です!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-17)ソート関数「void SortX(int sw,
TypeXYHV buf[],int size);」

    void    SortX(                                  // 配列ソート:TypeXYHV:X座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXYHV        buf[],              // バッファー
                int             size                // バッファーサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeXY HVbuf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「TypeXY HVbuf[],」は、一次元のデータ配列で
データの単位が「TypeXY HV型」と画像処理で使用する
XY座標組データです!
仮引数「int size」は、仮引数「TypeXY HVbuf[],」の
配列のサイズです!
このサイズ分のデータをソーティング(並べ替え)します!
★注意★XY座標組データをコノ関数SortX()で比較する
時はX座標の大小で比較し、X座標が同じならばY座標の
大小で比較と二段階に成ります!
★備考★尚、構造体「TypeXY HV型」の座標を示す値は、
short型です!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-18)ソート関数「void SortY(int sw,
TypeXYHV buf[],int size);」

    void    SortY(                                  // 配列ソート:TypeXYHV:Y座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXYHV        buf[],              // バッファー
                int             size                // バッファーサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeXY HVbuf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「TypeXY HVbuf[],」は、一次元のデータ配列で
データの単位が「TypeXY HV型」と画像処理で使用する
XY座標組データです!
仮引数「int size」は、仮引数「TypeXYHV buf[],」の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★注意★XY座標組データをコノ関数SortY()で比較する
時はY座標の大小で比較し、Y座標が同じならばX座標の
大小で比較と二段階に成ります!
★備考★尚、構造体「TypeXYHV型」の座標を示す値は、
short型です!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-19)ソート関数「void SortX(
int sw,TypeXYHVIX buf[],int size);」

    void    SortX(                                  // 配列ソート:TypeXYHVIX:X座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXYHVIX      buf[],              // バッファー
                int             size                // バッファーサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeXYHVIX buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「TypeXYHVIX buf[],」は、一次元のデータ配列で
データの単位が「TypeXYHVIX型」と画像処理で使用する
XY座標組&範囲(水平垂直幅)&別データへのリンク用の
インデックスを含めた複合データです!
仮引数「int size」は、仮引数「TypeXYHVIX buf[],」の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★注意★XY座標組データをコノ関数SortX()で比較する
時はX座標の大小で比較し、X座標が同じならばY座標の
大小で比較と二段階に成ります!
★備考★尚、構造体「TypeXYHVIX型」の座標を示す値は、
short型です!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-20)ソート関数「void SortY(int sw,
TypeXYHVIX buf[],int size);」

    void    SortY(                                  // 配列ソート:TypeXYHVIX:Y座標
                int             sw,                 // 0:昇順、 1:降順
                TypeXYHVIX      buf[],              // バッファー
                int             size                // バッファーサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeXYHVIX buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「TypeXYHVIX buf[],」は、一次元のデータ配列で
データの単位が「TypeXYHVIX型」と画像処理で使用する
XY座標組&範囲(水平垂直幅)&別データへのリンク用の
インデックスを含めた複合データです!
仮引数「int size」は、仮引数「TypeXYHVIX buf[],」の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★注意★XY座標組データをコノ関数SortY()で比較する
時はY座標の大小で比較し、Y座標が同じならばX座標の
大小で比較と二段階に成ります!
★備考★尚、構造体「TypeXYHVIX型」の座標を示す値は、
short型です!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-21)ソート関数「void SortArea(
int sw,TypeSf buf[],int size);」

    void    SortArea(                               // 配列ソート:TypeSf:面積ソート
                int             sw,                 // 0:昇順、 1:降順
                TypeSf          bufS[],             // バッファー
                int             size                // バッファーサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Area」は、英単語「範囲」を示しますが、ココでは面積の
値を意味します!詰り、面積の値で並べ替えを行います!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeSf buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「TypeSf buf[],」は、一次元のデータ配列で
データの単位が「TypeSf型」と画像計測結果で得られた各種
幾何学的情報≪フェレ情報や重心等の座標系・面積とかの
サイズ系等複合的な≫データです!
仮引数「int size」は、仮引数「TypeSf buf[],」の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★尚、構造体「TypeSf型」の面積を示す値は、
int型です!この「Sf」は、統計を示す英単語
「statistics」から「s」を機能とか関数を意味する
英単語「function」からとの意味の心算です画像計測で
得られた複数情報を統計的に処理出来る形で格納する
構造体「static TypeSf{}」をC言語上で作成し、
クラス「clasa TypeSf{}」で機能追加≪具体的には、
重心算出関数等をメソッドとして追加≫
そして、面積は画素数単位なので「int型」データとして
格納されていてこの面積でソートします!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-22)ソート関数「void SortArea(
int sw,TypeMB buf[],int size);」

    void    SortArea(                               // 配列ソート:TypeMB:面積ソート
                int             sw,                 // 0:昇順、 1:降順
                TypeMB          bufM[],             // バッファー
                int             size                // バッファーサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Area」は、英単語「Area」範囲を示しますが、ココでは、
面積の値を意味します!詰り、面積の値で並べ替えを行いま
す!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeMB buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「TypeMB buf[],」は、一次元のデータ配列で
データの単位が「TypeMB型」と画像計測結果で得られた各種
幾何学的情報≪フェレ情報や周囲長等極基本的な計測値≫
データです!
仮引数「int size」は、仮引数「TypeMB buf[],」の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★尚、構造体「TypeMB型」の面積を示す値は、
int型です!この「MB」は、計測を示す格納した
英単語「measurement」から「M」を複数の計測値つまり
ブロックを意味する英単語「block」で「B」からとの意味の
心算です画像計測で得られた複数情報を格納する
構造体「struct TypeMB{}」をクラス「class TypeSf{}」の
サブセット扱いです!
そして、面積は画素数単位なので「int型」データとして
格納されていてこの面積でソートします!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-23)ソート関数「int SortIndex(
int sw,BYTE bufkey[],short bufix[],int size);」

    int     SortIndex(                              // キー付ソート:BYTE
                int         sw,                     // 0:Key昇順、 1:Key降順
                BYTE        bufkey[],               // キー部のバッファー
                short       bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Index」は、英単語「Index」索引(配列では添え字)
日本語でもインデックスを示しますが、ココでは並び変え
対象のキー配列とインデックス配列を連動して並べ替える
事を意味します!他のソート関数と同じように、キーの値で
並べ替えを行います!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「BYTE bufkey[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「BYTE bufkey[],」は、一次元のデータ配列で
データの単位が「BYTE型」と1バイト符号無し整数です!
仮引数「short bufix[],」は、一次元のデータ配列で
連動して並び替えられるインデックスの値を示します!
★注意★私が事ある毎に配列で無くポインタを推して居る
事は知って居ると思い違和感を感じた人も多いと思いますの
で説明します!ポインタでは、4バイト必要に成るからです
このインデックスの様にshort型2バイトで十分と判断した
からです!勿論、このサイズのインデックスで済む応用しか
使用して居ません!
仮引数「int size」は、仮引数「BYTE bufkey[],」等の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-24)ソート関数「int SortIndex(
int sw,short bufkey[],short bufix[],int size);」

    int     SortIndex(                              // キー付ソート:short
                int         sw,                     // 0:Key昇順、 1:Key降順
                short       bufkey[],               // キー部のバッファー
                short       bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Index」は、英単語「Index」索引(配列では添え字)
日本語でもインデックスを示しますが、ココでは並び変え
対象のキー配列とインデックス配列を連動して並べ替える
事を意味します!他のソート関数と同じように、キーの値で
並べ替えを行います!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「short bufkey[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「short bufkey[],」は、一次元のデータ配列で
データの単位が「short型」と2バイト符号有り整数です!
仮引数「short bufix[],」は、一次元のデータ配列で連動し
て並び替えられるインデックスの値を示します!
★注意★私が事ある毎に配列で無くポインタを推して居る
事は知って居ると思い違和感を感じた人も多いと思いますの
で説明します!
ポインタでは、4バイト必要に成るからですこの
インデックスの様にshort型2バイトで十分と判断したから
です!
勿論、このサイズのインデックスで済む応用しか使用して
居ません!
仮引数「int size」は、仮引数「short bufkey[],」等の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-25)ソート関数「int SortIndex(
int sw,long bufkey[],short bufix[],int size);」

    int     SortIndex(                              // キー付ソート:long
                int         sw,                     // 0:Key昇順、 1:Key降順
                long        bufkey[],               // キー部のバッファー
                short       bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Index」は、英単語「Index」索引(配列では添え字)
日本語でもインデックスを示しますが、ココでは並び変え
対象のキー配列とインデックス配列を連動して並べ替える
事を意味します!他のソート関数と同じように、キーの値で
並べ替えを行います!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「long bufkey[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「long bufkey[],」は、一次元のデータ配列で
データの単位が「long型」と4バイト符号有り整数です!
仮引数「short bufix[],」は、一次元のデータ配列で
連動して並び替えられるインデックスの値を示します!
★注意★私が事ある毎に配列で無くポインタを推して居る
事は知って居ると思い違和感を感じた人も多いと思いますの
で説明します!
ポインタでは、4バイト必要に成るからですこの
インデックスの様にshort型2バイトで十分と判断したから
です!
勿論、このサイズのインデックスで済む応用しか使用して
居ません!
仮引数「int size」は、仮引数「long bufkey[],」等の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-26)ソート関数「int SortIndex(
int sw,int bufkey[],short bufix[],int size);」

    int     SortIndex(                              // キー付ソート:long
                int         sw,                     // 0:Key昇順、 1:Key降順
                int         bufkey[],               // キー部のバッファー
                short       bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Index」は、英単語「Index」索引(配列では添え字)
日本語でもインデックスを示しますが、ココでは並び変え
対象のキー配列とインデックス配列を連動して並べ替える
事を意味します!他のソート関数と同じように、キーの値で
並べ替えを行います!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「int bufkey[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「int bufkey[],」は、一次元のデータ配列で
データの単位が「int型」と4バイト符号有り整数です!
仮引数「short bufix[],」は、一次元のデータ配列で
連動して並び替えられるインデックスの値を示します!
★注意★私が事ある毎に配列で無くポインタを推して居る
事は知って居ると思い違和感を感じた人も多いと思いますの
で説明します!ポインタでは、4バイト必要に成るからです
このインデックスの様にshort型2バイトで十分と判断した
からです!勿論、このサイズのインデックスで済む応用しか
使用して居ません!
仮引数「int size」は、仮引数「int bufkey[],」等の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-27)ソート関数「int SortIndex(
int sw,float bufkey[],short bufix[],int size);」

    int     SortIndex(                              // キー付ソート:float
                int         sw,                     // 0:Key昇順、 1:Key降順
                float       bufkey[],               // キー部のバッファー
                short       bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Index」は、英単語「Index」索引(配列では添え字)
日本語でもインデックスを示しますが、ココでは並び変え
対象のキー配列とインデックス配列を連動して並べ替える
事を意味します!他のソート関数と同じように、キーの値で
並べ替えを行います!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「float bufkey[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「floatbufkey[],」は、一次元のデータ配列で
データの単位が「float型」と4バイト単精度浮動小数点
数です!
仮引数「short bufix[],」は、一次元のデータ配列で
連動して並び替えられるインデックスの値を示します!
★注意★私が事ある毎に配列で無くポインタを推して居る
事は知って居ると思い違和感を感じた人も多いと思いますの
で説明します!ポインタでは、4バイト必要に成るからです
このインデックスの様にshort型2バイトで十分と判断した
からです!勿論、このサイズのインデックスで済む応用しか
使用して居ません!
仮引数「int size」は、仮引数「float bufkey[],」等の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-28)ソート関数「int SortIndex(
int sw,double bufkey[],short bufix[],int size);」

    int     SortIndex(                              // キー付ソート:double
                int         sw,                     // 0:Key昇順、 1:Key降順
                double      bufkey[],               // キー部のバッファー
                short       bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Index」は、英単語「Index」索引(配列では添え字)
日本語でもインデックスを示しますが、ココでは並び変え
対象のキー配列とインデックス配列を連動して並べ替える
事を意味します!他のソート関数と同じように、キーの値で
並べ替えを行います!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「double bufkey[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「double bufkey[],」は、一次元のデータ配列で
データの単位が「double 型」と8バイト倍精度浮動小数点
数です!
仮引数「short bufix[],」は、一次元のデータ配列で連動
して並び替えられるインデックスの値を示します!
★注意★私が事ある毎に配列で無くポインタを推して居る
事は知って居ると思い違和感を感じた人も多いと思いますの
で説明します!ポインタでは、4バイト必要に成るからです
このインデックスの様にshort型2バイトで十分と判断した
からです!
勿論、このサイズのインデックスで済む応用しか使用して
居ません!
仮引数「int size」は、仮引数「double bufkey[],」等の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-29)ソート関数「int SortIndex(
int sw,__int64 bufkey[],short bufix[],int size);」

    int     SortIndex(                              // キー付ソート:64Bit整数
                int         sw,                     // 0:Key昇順、 1:Key降順
                __int64     bufkey[],               // キー部のバッファー
                short       bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Index」は、英単語「Index」索引(配列では添え字)
日本語でもインデックスを示しますが、ココでは並び変え
対象のキー配列とインデックス配列を連動して並べ替える
事を意味します!他のソート関数と同じように、キーの値で
並べ替えを行います!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「__int64 bufkey[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「__int 64bufkey[],」は、一次元のデータ配列で
データの単位が「__int 64型」と8バイト詰まり64ビット
整数値です!仮引数「short bufix[],」は、一次元のデータ
配列で連動して並び替えられるインデックスの値を示し
ます!
★注意★私が事ある毎に配列で無くポインタを推して居る
事は知って居ると思い違和感を感じた人も多いと思いますの
で説明します!ポインタでは、4バイト必要に成るからです
このインデックスの様にshort型2バイトで十分と判断した
からです!勿論、このサイズのインデックスで済む応用しか
使用して居ません!
仮引数「int size」は、仮引数「__int64 bufkey[],」等の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-30)ソート関数「int SortIndex(
int sw,BYTE bufkey[],int bufix[],int size);」

    int     SortIndex(                              // キー付ソート:BYTE
                int         sw,                     // 0:Key昇順、 1:Key降順
                BYTE        bufkey[],               // キー部のバッファー
                int         bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Index」は、英単語「Index」索引(配列では添え字)
日本語でもインデックスを示しますが、ココでは並び変え
対象のキー配列とインデックス配列を連動して並べ替える
事を意味します!他のソート関数と同じように、キーの値で
並べ替えを行います!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「BYTE bufkey[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「BYTE bufkey[],」は、一次元のデータ配列で
データの単位が「BYTE型」と1バイト符号無し整数です!
仮引数「int bufix[],」は、一次元のデータ配列で
連動して並び替えられるインデックスの値を示します!
★注意★ここでint型4バイト整数型に変えたのは、
ソートするデータ数が16ビットに収まらない、具体的には
32767を越える数量の場合です!
数量が多く成った場合の関数なので遅くても正常に動く方を
優先したからです!
仮引数「int size」は、仮引数「BYTE bufkey[],」等の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-31)ソート関数「int SortIndex(
int sw,short bufkey[],int bufix[],int size);」

    int     SortIndex(                              // キー付ソート:short
                int         sw,                     // 0:Key昇順、 1:Key降順
                short       bufkey[],               // キー部のバッファー
                int         bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Index」は、英単語「Index」索引(配列では添え字)
日本語でもインデックスを示しますが、ココでは並び変え
対象のキー配列とインデックス配列を連動して並べ替える
事を意味します!他のソート関数と同じように、キーの値で
並べ替えを行います!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「short bufkey[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「short bufkey[],」は、一次元のデータ配列で
データの単位が「short型」と2バイト符号有り整数です!
仮引数「int bufix[],」は、一次元のデータ配列で
連動して並び替えられるインデックスの値を示します!
★注意★ここでint型4バイト整数型に変えたのは、
ソートするデータ数が16ビットに収まらない、具体的には
32767を越える数量の場合です!数量が多く成った
場合の関数なので遅くても正常に動く方を優先したからで
す!
仮引数「int size」は、仮引数「short bufkey[],」等の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-32)ソート関数「int SortIndex(
int sw,long bufkey[],int bufix[],int size);」

    int     SortIndex(                              // キー付ソート:long
                int         sw,                     // 0:Key昇順、 1:Key降順
                long        bufkey[],               // キー部のバッファー
                int         bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Index」は、英単語「Index」索引(配列では添え字)
日本語でもインデックスを示しますが、ココでは並び変え
対象のキー配列とインデックス配列を連動して並べ替える
事を意味します!他のソート関数と同じように、キーの値で
並べ替えを行います!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「long bufkey[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「long bufkey[],」は、一次元のデータ配列で
データの単位が「long型」と4バイト符号有り整数です!
仮引数「int bufix[],」は、一次元のデータ配列で
連動して並び替えられるインデックスの値を示します!
★注意★ここでint型4バイト整数型に変えたのは、
ソートするデータ数が16ビットに収まらない、具体的には
32767を越える数量の場合です!
数量が多く成った場合の関数なので遅くても正常に動く方を
優先したからです!
仮引数「int size」は、仮引数「long bufkey[],」等の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-33)ソート関数「int SortIndex(
int sw,int bufkey[],int bufix[],int size);」

    int     SortIndex(                              // キー付ソート:long
                int         sw,                     // 0:Key昇順、 1:Key降順
                int         bufkey[],               // キー部のバッファー
                int         bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Index」は、英単語「Index」索引(配列では添え字)
日本語でもインデックスを示しますが、ココでは並び変え
対象のキー配列とインデックス配列を連動して並べ替える
事を意味します!他のソート関数と同じように、キーの値で
並べ替えを行います!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「int bufkey[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「int bufkey[],」は、一次元のデータ配列で
データの単位が「int型」と4バイト符号有り整数です!
仮引数「int bufix[],」は、一次元のデータ配列で
連動して並び替えられるインデックスの値を示します!
★注意★ここでint型4バイト整数型に変えたのは、
ソートするデータ数が16ビットに収まらない、具体的には
32767を越える数量の場合です!
数量が多く成った場合の関数なので遅くても正常に動く方を
優先したからです!
仮引数「int size」は、仮引数「int bufkey[],」等の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-34)ソート関数「int SortIndex(
int sw,float bufkey[],int bufix[],int size);」

    int     SortIndex(                              // キー付ソート:float
                int         sw,                     // 0:Key昇順、 1:Key降順
                float       bufkey[],               // キー部のバッファー
                int         bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Index」は、英単語「Index」索引(配列では添え字)
日本語でもインデックスを示しますが、ココでは並び変え
対象のキー配列とインデックス配列を連動して並べ替える
事を意味します!他のソート関数と同じように、キーの値で
並べ替えを行います!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「float bufkey[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「float bufkey[],」は、一次元のデータ配列で
データの単位が「float型」と4バイト単精度浮動小数点数
です!
仮引数「int bufix[],」は、一次元のデータ配列で
連動して並び替えられるインデックスの値を示します!
★注意★ここでint型4バイト整数型に変えたのはソート
するデータ数が16ビットに収まらない、具体的には
32767を越える数量の場合です!
数量が多く成った場合の関数なので遅くても正常に動く方を
優先したからです!
仮引数「int size」は、仮引数「float bufkey[],」等の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-35)ソート関数「int SortIndex(
int sw,double bufkey[],int bufix[],int size);」

    int     SortIndex(                              // キー付ソート:double
                int         sw,                     // 0:Key昇順、 1:Key降順
                double      bufkey[],               // キー部のバッファー
                int         bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Index」は、英単語「Index」索引(配列では添え字)
日本語でもインデックスを示しますが、ココでは並び変え
対象のキー配列とインデックス配列を連動して並べ替える
事を意味します!他のソート関数と同じように、キーの値で
並べ替えを行います!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「double bufkey[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが、
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「double bufkey[],」は、一次元のデータ配列で
データの単位が「double 型」と8バイト倍精度浮動小数点
数です!
仮引数「int bufix[],」は、一次元のデータ配列で連動して
並び替えられるインデックスの値を示します!
★注意★ここでint型4バイト整数型に変えたのは、
ソートするデータ数が16ビットに収まらない、具体的には
32767を越える数量の場合です!
数量が多く成った場合の関数なので遅くても正常に動く方を
優先したからです!
仮引数「int size」は、仮引数「double bufkey[],」等の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-36)ソート関数「int SortIndex(
int sw,__int64 bufkey[],int bufix[],int size);」

    int     SortIndex(                              // キー付ソート:64Bit整数
                int         sw,                     // 0:Key昇順、 1:Key降順
                __int64     bufkey[],               // キー部のバッファー
                int         bufix[],                // 添字部のバッファー
                int         size                    // バッファーのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Index」は、英単語「Index」索引(配列では添え字)
日本語でもインデックスを示しますが、ココでは並び変え
対象のキー配列とインデックス配列を連動して並べ替える
事を意味します!他のソート関数と同じように、キーの値で
並べ替えを行います!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「__int 64buf key[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「__int64 bufkey[],」は、一次元のデータ配列で
データの単位が「__int 64型」と8バイト詰まり64ビット
整数値です!
仮引数「int bufix[],」は、一次元のデータ配列で
連動して並び替えられるインデックスの値を示します!
★注意★ここでint型4バイト整数型に変えたのは、
ソートするデータ数が16ビットに収まらない、具体的には
32767を越える数量の場合です!数量が多く成った場合
の関数なので遅くても正常に動く方を優先したからです!
仮引数「int size」は、仮引数「__int64 bufkey[],」等の
配列のサイズです!このサイズ分のデータをソーティング
(並べ替え)します!
★備考★基本的なアルゴリズム≪採用した方法は、この当時
最強と考えた「クイックソート」です!今でも最強と思って
います≫は、この関数で使用したアルゴリズムが他の関数で
も採用されている方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-37)関数「int SortCopy(
TypeArray* pa,int n,short bufix[],int offset,int l);」

    int     SortCopy(                               // ソート後添え字で並び替え
                TypeArray   *pa,                    // 配列1~10の情報
                int         n,                      // 配列の個数 0..99
                short       bufix[],                // 添字部のBuffer
                int         offset,                 // 先頭からのOffset
                int         l                       // 配列の最小大きさ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
関数「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「short bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「TypeArray* pa,」は、画像では無く一次元配列を
しかも複数指定できる事を目的
★注意★元々、ADS社画像処理装置に搭載した
インタプリタ言語PIPLで配列データを使う為の仕組みと
して構造体「TypeArray* 」を使用していた名残です!
★備考★PIPLも私の計画としては、新しく画像処理専用
言語として発表する心算ですので乞うご期待と記載して置き
ます!
ポインタでデータ配列が有る事は理解していると思いますが
その配列が何組あるかを示す数が、この「int n」です!
仮引数「int n」は、仮引数「TypeArray* pa,」で示される
仮引数「short bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
仮引数「int offset,」は、インデックス配列に依って並べ
替えるデータ配列【仮引数「TypeArray* pa,」で示した実体
から必要なオフセットずらす事が出来る様に設定】出来る
ようにした物です!
仮引数「int l」は、インデックス配列に依って並べ替える
データ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-38)関数「int SortCopy(
BYTE buf[],short bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並び替え:BYTE
                BYTE        buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「short bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「BYTE buf[],」は、処理対象一次元配列を示し
ます!
今回データ配列は、「BYTE型」1バイト符号無しです!
仮引数「short bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
仮引数「int size」は、インデックス配列に依って並べ
替えるデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-44)関数「int SortCopy(
short buf[],short bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並替え:short
                short       buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「short bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「short buf[],」は、処理対象一次元配列を示しま
す!
今回データ配列は、「short型」2バイト符号有りです!
仮引数「short bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
仮引数「int size」は、インデックス配列に依って並べ替
えるデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-40)関数「int SortCopy(
int buf[],short bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並び替え:int
                int         buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「short bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「int buf[],」は、処理対象一次元配列を示します!
今回データ配列は、「int型」4バイト符号有りです!
仮引数「short bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
仮引数「int size」は、インデックス配列に依って並べ替
えるデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-41)関数「int SortCopy(
float buf[],short bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並び替え:float
                float       buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「short bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「floatbuf[],」は、処理対象一次元配列を示します!
今回データ配列は、「float型」4バイト単精度浮動小数点
数です!
仮引数「short bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
仮引数「int size」は、インデックス配列に依って並べ替
えるデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-42)関数「int SortCopy(
double buf[],short bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並替:double
                double      buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「short bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「double buf[],」は、処理対象一次元配列を示し
ます!今回データ配列は、「double 型」8バイト倍精度
浮動小数点数です!
仮引数「short bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
仮引数「int size」は、インデックス配列に依って並べ替
えるデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-43)関数「int SortCopy(
__int64 buf[],short bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並替:64Bit整数
                __int64     buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「short bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「__int64 buf[],」は、処理対象一次元配列を示し
ます!今回データ配列は、「__int64型」8バイト符号有り
です!
仮引数「short bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
仮引数「int size」は、インデックス配列に依って並べ替え
るデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-44)関数「int SortCopy(
void *buf[],short bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並替:void*
                void*       buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「short bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「void *buf[],」は、処理対象一次元配列を示し
ます!今回データ配列は、「void *型」任意ポインタを
格納した物!
仮引数「short bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
仮引数「int size」は、インデックス配列に依って並べ替
えるデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-45)関数「int SortCopy(
TypeXY buf[],short bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並替:TypeXY
                TypeXY      buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「short bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「TypeXY buf[],」は、処理対象一次元配列を
示します!
今回データ配列は、「TypeXY 型」を格納した物!
仮引数「short bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
仮引数「int size」は、インデックス配列に依って並べ替
えるデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-46)関数「int SortCopy(
TypeXYI buf[],short bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並替:TypeXYI
                TypeXYI     buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「short bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「TypeXYI buf[],」は、処理対象一次元配列を示し
ます!今回データ配列は、「TypeXYI型」を格納した物!
仮引数「short bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
仮引数「int size」は、インデックス配列に依って並べ替え
るデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-47)関数「int SortCopy(
TypeXYHV buf[],short bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並替:TypeXYHV
                TypeXYHV    buf[],                  // 並び替え対象
                short       bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「short bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「TypeXYHV buf[],」は、処理対象一次元配列を示し
ます!今回データ配列は、「TypeXYHV型」を格納した物!
仮引数「short bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
仮引数「int size」は、インデックス配列に依って並べ替え
るデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-48)関数「int SortCopy(
TypeArray* pa,int n,int bufix[],int offset,int l);」

    int     SortCopy(                               // ソート後添え字で並び替え
                TypeArray   *pa,                    // 配列1~10の情報
                int         n,                      // 配列の個数 0..99
                int         bufix[],                // 添字部のBuffer
                int         offset,                 // 先頭からのOffset
                int         l                       // 配列の最小大きさ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「int bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「TypeArray* pa,」は、画像では無く一次元配列を
しかも複数指定できる事を目的★注意★元々、ADS社画像
処理装置に搭載したインタプリタ言語PIPLで配列データ
を使う為の仕組みとして構造体「TypeArray* 」を使用して
いた名残です!
★備考★PIPLも私の計画としては、新しく画像処理専用
言語として発表する心算ですので乞うご期待と記載して置き
ます!
ポインタでデータ配列が有る事は理解していると思いますが
その配列が何組あるかを示す数が、この「int n」です!
仮引数「int n」は、仮引数「TypeArray* pa,」で示される
仮引数「int bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
★備考★型を「int型」配列にして居るのは、インデックス
配列のサイズが32767を超えているからです!
仮引数「int offset,」は、インデックス配列に依って並べ
替えるデータ配列【仮引数「TypeArray* pa,」で示した実体
から必要なオフセットずらす事が出来る様に設定】出来る
ようにした物です!
仮引数「int l」は、インデックス配列に依って並べ替える
データ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-49)関数「int SortCopy(
BYTE buf[],int bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並び替え:BYTE
                BYTE        buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「int bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「BYTE buf[],」は、処理対象一次元配列を示し
ます!今回データ配列は、「BYTE型」1バイト符号無し
です!
仮引数「int bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
★備考★型を「int型」配列にして居るのは、インデックス
配列のサイズが32767を超えているからです!
仮引数「int size」は、インデックス配列に依って並べ替
えるデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-50)関数「int SortCopy(
short buf[],int bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並替え:short
                short       buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「int bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「short buf[],」は、処理対象一次元配列を示し
ます!今回データ配列は、「short型」2バイト符号有り
です!
仮引数「int bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
★備考★型を「int型」配列にして居るのは、インデックス
配列のサイズが32767を超えているからです!
仮引数「int size」は、インデックス配列に依って並べ替
えるデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-51)関数「int SortCopy(
int buf[],int bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並び替え:int
                int         buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「int bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「int buf[],」は、処理対象一次元配列を示します!
今回データ配列は、「int型」4バイト符号有りです!
仮引数「int bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
★備考★型を「int型」配列にして居るのは、インデックス
配列のサイズが32767を超えているからです!
仮引数「int size」は、インデックス配列に依って並べ替え
るデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-52)関数「int SortCopy(
float buf[],int bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並び替え:float
                float       buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「int bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「float buf[],」は、処理対象一次元配列を示します!
今回データ配列は、「float型」4バイト単精度浮動小数点
数です!
仮引数「int bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
★備考★型を「int型」配列にして居るのは、インデックス
配列のサイズが32767を超えているからです!
仮引数「int size」は、インデックス配列に依って並べ替
えるデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-53)関数「int SortCopy(
double buf[],int bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並替:double
                double      buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「int bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「double buf[],」は、処理対象一次元配列を示し
ます!今回データ配列は、「double 型」8バイト倍精度
浮動小数点数です!
仮引数「int bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
★備考★型を「int型」配列にして居るのは、インデックス
配列のサイズが32767を超えているからです!
仮引数「int size」は、インデックス配列に依って並べ替え
るデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-54)関数「int SortCopy(
__int64 buf[],int bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並替:64Bit整数
                __int64     buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「int bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「__int64 buf[],」は、処理対象一次元配列を示し
ます!今回データ配列は、「__int64型」8バイト符号有り
です!
仮引数「int bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
★備考★型を「int型」配列にして居るのは、インデックス
配列のサイズが32767を超えているからです!
仮引数「int size」は、インデックス配列に依って並べ替え
るデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-55)関数「int SortCopy(
void *buf[],int bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並替:void*
                void*       buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「int bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「void *buf[],」は、処理対象一次元配列を示し
ます!今回データ配列は、「void *型」任意ポインタを格納
した物!
仮引数「int bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
★備考★型を「int型」配列にして居るのは、インデックス
配列のサイズが32767を超えているからです!
仮引数「int size」は、インデックス配列に依って並べ替え
るデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-56)関数「int SortCopy(
TypeXY buf[],int bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並替:TypeXY
                TypeXY      buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「int bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「TypeXY buf[],」は、処理対象一次元配列を示し
ます!今回データ配列は、「TypeXY 型」を格納した物!
仮引数「int bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
★備考★型を「int型」配列にして居るのは、インデックス
配列のサイズが32767を超えているからです!
仮引数「int size」は、インデックス配列に依って並べ替え
るデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-57)関数「int SortCopy(
TypeXYI buf[],int bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並替:TypeXYI
                TypeXYI     buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「int bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「TypeXY Ibuf[],」は、処理対象一次元配列を示し
ます!今回データ配列は、「TypeXY I型」を格納した物!
仮引数「int bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
★備考★型を「int型」配列にして居るのは、インデックス
配列のサイズが32767を超えているからです!
仮引数「int size」は、インデックス配列に依って並べ替え
るデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-58)関数「int SortCopy(
TypeXYHV buf[],int bufix[],int size);」

    int     SortCopy(                               // Sort後添字で並替:TypeXYHV
                TypeXYHV    buf[],                  // 並び替え対象
                int         bufix[],                // 添字部Bufferのptr
                int         size                    // Bufferのサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Copy」は、コピーですが、ココでは、直前に解説した
ソート関数「int SortIndex()」で仮引数「int bufix[]」
でインデックス配列がソートサレテいる事を利用して紐付け
ていたデータ配列をソート(並べ替え)しながらコピーする
関数だと考えて下さい!
仮引数「TypeXYHV buf[],」は、処理対象一次元配列を示し
ます!今回データ配列は、「TypeXY HV型」を格納した物!
仮引数「int bufix[]」は、一次元のデータ配列でソート
関数「int SortIndex()」でキーデータでソートした時の
連動インデックスに成っているソート済みのインデックス
配列を実引数としてセットする事にして居ます!
★備考★型を「int型」配列にして居るのは、インデックス
配列のサイズが32767を超えているからです!
仮引数「int size」は、インデックス配列に依って並べ替え
るデータ配列長さの指定です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-59)関数「void SortUpdate(int sw,
BYTE buf[],int size,int d);」

    void    SortUpdate(                             // ソート(1Data更新):BYTE
                int         sw,                     // 0:昇順、 1:降順
                BYTE        buf[],                  // バッファー
                int         size,                   // バッファーサイズ
                int         d );                    // データ

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「BYTE buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えス
イッチを置く事にしました!
「Update」は、英単語「Update」で「・・を最新のものにす
る」です!
と言う訳でこの関数は、ソート済みの配列に新しいデータを
加える「最新の物にする・更新する」関数です!
仮引数「BYTE buf[],」は、更新対象のデータ配列です!
ここでは、「BYTE型」1バイト符号無し整数データ!
仮引数「int size,」は、データ配列のサイズです!
仮引数「int d」は、更新データです!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-60)関数「void SortUpdate(int sw,
short buf[],int size,int d);」

    void    SortUpdate(                             // ソート(1Data更新):short
                int         sw,                     // 0:昇順、 1:降順
                short       buf[],                  // バッファー
                int         size,                   // バッファーサイズ
                int         d );                    // データ

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「short buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
「Update」は、英単語「Update」で「・・を最新のものにす
る」です!
と言う訳でこの関数は、ソート済みの配列に新しいデータを
加える「最新の物にする・更新する」関数です!
仮引数「short buf[],」は、更新対象のデータ配列です!
ここでは、「short型」2バイト符号有り整数データ!
仮引数「int size,」は、データ配列のサイズです!
仮引数「int d」は、更新データです!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-61)関数「void SortUpdate(int sw,
int buf[],int size,int d);」

    void    SortUpdate(                             // ソート(1Data更新):int
                int         sw,                     // 0:昇順、 1:降順
                int         buf[],                  // バッファー
                int         size,                   // バッファーサイズ
                int         d );                    // データ

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「int buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
「Update」は、英単語「Update」で「・・を最新のものにす
る」です!
と言う訳でこの関数は、ソート済みの配列に新しいデータを
加える「最新の物にする・更新する」関数です!
仮引数「int buf[],」は、更新対象のデータ配列です!
ここでは、「int型」4バイト符号有り整数データ!
仮引数「int size,」は、データ配列のサイズです!
仮引数「int d」は、更新データです!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-62)関数「void SortUpdate(int sw,
float buf[],int size,double d);」

    void    SortUpdate(                             // ソート(1Data更新):float
                int         sw,                     // 0:昇順、 1:降順
                float       buf[],                  // バッファー
                int         size,                   // バッファーサイズ
                double      d );                    // データ

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「float buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
「Update」は、英単語「Update」で「・・を最新のものにす
る」です!と言う訳でこの関数は、ソート済みの配列に新し
いデータを加える「最新の物にする・更新する」関数です!
仮引数「float buf[],」は、更新対象のデータ配列です!
ここでは、「float型」4バイト単精度浮動小数点データ!
仮引数「int size,」は、データ配列のサイズです!
仮引数「double d」は、更新データです!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-63)関数「void SortUpdate(int sw,
double buf[],int size,double d);」

    void    SortUpdate(                             // ソート(1Data更新):double
                int         sw,                     // 0:昇順、 1:降順
                double      buf[],                  // バッファー
                int         size,                   // バッファーサイズ
                double      d );                    // データ

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「double buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
「Update」は、英単語「Update」で「・・を最新のものにす
る」です!
と言う訳でこの関数は、ソート済みの配列に新しいデータを
加える「最新の物にする・更新する」関数です!
仮引数「double buf[],」は、更新対象のデータ配列です!
ここでは、「double 型」8バイト倍精度浮動小数点
データ!
仮引数「int size,」は、データ配列のサイズです!
仮引数「double d」は、更新データです!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-64)関数「void SortUpdate(int sw,
TypeCorr buf[],int size,double d,int x,int y);」

    void    SortUpdate(                             // ソート(1Data更新):TypeCorr
                int         sw,                     // 0:昇順、 1:降順
                TypeCorr    buf[],                  // バッファー
                int         size,                   // バッファーサイズ
                double      d,                      // データ
                int         x,                      // X座標
                int         y );                    // Y座標

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「double buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
「Update」は、英単語「Update」で「・・を最新のものにす
る」です!
と言う訳でこの関数は、ソート済みの配列に新し
いデータを加える「最新の物にする・更新する」関数です!
仮引数「TypeCorrbuf[],」は、更新対象のデータ配列です!
ここでは、「TypeCorr型」正規相関用データです!
仮引数「int size,」は、データ配列のサイズです!
仮引数「double d,」及び、
仮引数「int x,」と
仮引数「int y」とで、正規相関「TypeCorr型」のそれぞれ
メンバー変数の値で更新データです!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-65)関数「void SortMerge(int sw,
BYTE buf1[],BYTE buf2[],BYTE buf[],
int size1,int size2);」

    void    SortMerge(                              // ソート(併合):BYTE
                int         sw,                     // 0:昇順、 1:降順
                BYTE        buf1[],                 // バッファー:1
                BYTE        buf2[],                 // バッファー:2
                BYTE        buf[],                  // バッファー:格納先
                int         size1,                  // バッファーサイズ:1
                int         size2 );                // バッファーサイズ:2

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Merge」は、英単語「Merge」で合併する・併合する・
既に日本語的にマージとカタカナ言葉にも成って居る?!
★注意★ソーティングとしてマージソートを使用する時は、
大昔、コンピューターの外付け記憶装置が、磁気テープ≪
現在、家庭用のVTR(ビデオ・テープ・レコーダー)すら
過去の物に成って居るので更に前の音楽テープ・レコーダー
(初代のウォークマンも携帯可能なテープレコーダーとして
開発)とアナログの音楽や映像を記憶する装置にも馴染みが
無い人が多いと思いますが、コンピューターの補助記憶装置
としては、現在、バックアップ用途として未だに現役で使用
されている記憶装置です≫が主だった時に良く使われたソー
ティング技法です?!テープですのでデータはシーケンシャ
ルに前の方から順番にアクセスするのが記憶装置の使い方で
有る事は理解して頂きたい!その為、半導体メモリーの様に
ランダムアクセス≪任意に自由な場所をアクセス≫が、出来
ない為に前から順にデータを読みだすか、順に書き込むかし
か無いと不自由な操作が求められます!この環境下で効率良
く、ソーティングが出来るのが、マージソートです!
前提として2本のソーティング済みのデータ列が2本≪磁気
テープだと物理的にソーティング済みのデータが入っている
物が2本で半導体メモリーで行う場合、2本のデータ配列が
ソーティング済みと言う事です!≫有る事が、必要でコノ
関数「SortMerge()」は、2本のデータ配列から、新しく
2本のデータを合わせた(マージ)した結果データ配列≪
★備考★多分、勘の鋭い人は、結果の配列は2本のデータが
収まるサイズが必要と思われたと思います!
その通り、結果として格納される配列【ここでは、
仮引数「BYTE buf[]」に対応する実引数で示される配列領域
】≫を用意する必要が有ります!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「double buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「BYTE buf1[],」は、マージ対象の配列1本目です!
勿論、データは、仮引数「int sw,」で示された
昇順/降順に従ったソート済みで有る事が必要です!
仮引数「BYTE buf2[],」は、マージ対象の配列2本目です!
勿論、データは、仮引数「int sw,」で示された
昇順/降順に従ったソート済みで有る事が必要です!
仮引数「BYTE buf[],」は、ソート結果を格納する配列です
サイズは、仮引数「BYTE buf1[],BYTE buf2[],」両方が格納
されるサイズ対応する実引数の領域が必要です!
仮引数「int size1,」は、仮引数「BYTE buf1[],」の
サイズです!
仮引数「int size2」は、仮引数「BYTE buf2[],」の
サイズです!
★備考★この関数は、データ数が極めて大きい時の用途に
使用する方法です!予め、中身がソーティングされて無い
大きなデータ配列を小分けにして前述したソート関数
「sort();」等アルゴリズムとしてクイックソートを使用し
たソートを使用してソートしたデータ配列をココの関数
「SortMerge()」でマージして1本のソート済みデータ配列
にする事が出来ます!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-66)関数「void SortMerge(int sw,
short buf1[],short buf2[],short buf[],
int size1,int size2);」

    void    SortMerge(                              // ソート(併合):short
                int         sw,                     // 0:昇順、 1:降順
                short       buf1[],                 // バッファー:1
                short       buf2[],                 // バッファー:2
                short       buf[],                  // バッファー:格納先
                int         size1,                  // バッファーサイズ:1
                int         size2 );                // バッファーサイズ:2

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Merge」は、英単語「Merge」で合併する・併合する・
既に日本語的にマージとカタカナ言葉にも成って居る?!
★注意★ソーティングとしてマージソートを使用する時は、
大昔、コンピューターの外付け記憶装置が、磁気テープ≪
現在、家庭用のVTR(ビデオ・テープ・レコーダー)すら
過去の物に成って居るので更に前の音楽テープ・レコーダー
(初代のウォークマンも携帯可能なテープレコーダーとして
開発)とアナログの音楽や映像を記憶する装置にも馴染みが
無い人が多いと思いますが、コンピューターの補助記憶装置
としては、現在、バックアップ用途として未だに現役で使用
されている記憶装置です≫が主だった時に良く使われたソー
ティング技法です?!テープですのでデータはシーケンシャ
ルに前の方から順番にアクセスするのが記憶装置の使い方で
有る事は理解して頂きたい!その為、半導体メモリーの様に
ランダムアクセス≪任意に自由な場所をアクセス≫が、出来
ない為に前から順にデータを読みだすか、順に書き込むかし
か無いと不自由な操作が求められます!この環境下で効率良
く、ソーティングが出来るのが、マージソートです!
前提として2本のソーティング済みのデータ列が2本≪磁気
テープだと物理的にソーティング済みのデータが入っている
物が2本で半導体メモリーで行う場合、2本のデータ配列が
ソーティング済みと言う事です!≫有る事が、必要でコノ
関数「SortMerge()」は、2本のデータ配列から、新しく
2本のデータを合わせた(マージ)した結果データ配列≪
★備考★多分、勘の鋭い人は、結果の配列は2本のデータが
収まるサイズが必要と思われたと思います!その通り、結果
として格納される配列【ここでは、
仮引数「short buf[]」に対応する実引数で示される配列
領域】≫を用意する必要が有ります!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「double buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「short buf1[],」は、マージ対象の配列1本目
です!
勿論、データは、仮引数「int sw,」で示された
昇順/降順に従ったソート済みで有る事が必要です!
仮引数「short buf2[],」は、マージ対象の配列2本目
です!
勿論、データは、仮引数「int sw,」で示された
昇順/降順に従ったソート済みで有る事が必要です!
仮引数「short buf[],」は、ソート結果を格納する配列
です、サイズは、仮引数「short buf1[],short buf2[],」
両方が格納されるサイズ対応する実引数の領域が必要です!
仮引数「int size1,」は、仮引数「short buf1[],」の
サイズ
です!
仮引数「int size2」は、仮引数「short buf2[],」の
サイズです!
★備考★この関数は、データ数が極めて大きい時の用途に
使用する方法です!予め、中身がソーティングされて無い
大きなデータ配列を小分けにして前述したソート関数
「sort();」等アルゴリズムとしてクイックソートを使用し
たソートを使用してソートしたデータ配列をココの関数
「SortMerge()」でマージして1本のソート済みデータ配列
にする事が出来ます!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-67)関数「void SortMerge(int sw,
int buf1[],int buf2[],int buf[],
int size1,int size2);」

    void    SortMerge(                              // ソート(併合):int
                int         sw,                     // 0:昇順、 1:降順
                int         buf1[],                 // バッファー:1
                int         buf2[],                 // バッファー:2
                int         buf[],                  // バッファー:格納先
                int         size1,                  // バッファーサイズ:1
                int         size2 );                // バッファーサイズ:2

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Merge」は、英単語「Merge」で合併する・併合する・
既に日本語的にマージとカタカナ言葉にも成って居る?!
★注意★ソーティングとしてマージソートを使用する時は、
大昔、コンピューターの外付け記憶装置が、磁気テープ≪
現在、家庭用のVTR(ビデオ・テープ・レコーダー)すら
過去の物に成って居るので更に前の音楽テープ・レコーダー
(初代のウォークマンも携帯可能なテープレコーダーとして
開発)とアナログの音楽や映像を記憶する装置にも馴染みが
無い人が多いと思いますが、コンピューターの補助記憶装置
としては、現在、バックアップ用途として未だに現役で使用
されている記憶装置です≫が主だった時に良く使われたソー
ティング技法です?!テープですのでデータはシーケンシャ
ルに前の方から順番にアクセスするのが記憶装置の使い方で
有る事は理解して頂きたい!その為、半導体メモリーの様に
ランダムアクセス≪任意に自由な場所をアクセス≫が、出来
ない為に前から順にデータを読みだすか、順に書き込むかし
か無いと不自由な操作が求められます!この環境下で効率良
く、ソーティングが出来るのが、マージソートです!
前提として2本のソーティング済みのデータ列が2本≪磁気
テープだと物理的にソーティング済みのデータが入っている
物が2本で半導体メモリーで行う場合、2本のデータ配列が
ソーティング済みと言う事です!≫有る事が、必要でコノ
関数「SortMerge()」は、2本のデータ配列から、新しく
2本のデータを合わせた(マージ)した結果データ配列≪
★備考★多分、勘の鋭い人は、結果の配列は2本のデータが
収まるサイズが必要と思われたと思います!その通り、結果
として格納される配列【ここでは、仮引数「int buf[]」に
対応する実引数で示される配列領域】≫を用意する必要が有
ります!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「double buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「int buf1[],」は、マージ対象の配列1本目です!
勿論、データは、仮引数「int sw,」で示された
昇順/降順に従ったソート済みで有る事が必要です!
仮引数「int buf2[],」は、マージ対象の配列2本目です!
勿論、データは、仮引数「int sw,」で示された
昇順/降順に従ったソート済みで有る事が必要です!
仮引数「int buf[],」は、ソート結果を格納する配列です
サイズは、仮引数「int buf1[],int buf2[],」両方が格納
されるサイズ対応する実引数の領域が必要です!
仮引数「int size1,」は、仮引数「int buf1[],」のサイズ
です!
仮引数「int size2」は、仮引数「int buf2[],」のサイズ
です!
★備考★この関数は、データ数が極めて大きい時の用途に
使用する方法です!予め、中身がソーティングされて無い
大きなデータ配列を小分けにして前述したソート関数
「sort();」等アルゴリズムとしてクイックソートを使用し
たソートを使用してソートしたデータ配列をココの関数
「SortMerge()」でマージして1本のソート済みデータ配列
にする事が出来ます!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-68)関数「void SortMerge(int sw,
float buf1[],float buf2[],floatbuf[],
int size1,int size2);」

    void    SortMerge(                              // ソート(併合):float
                int         sw,                     // 0:昇順、 1:降順
                float       buf1[],                 // バッファー:1
                float       buf2[],                 // バッファー:2
                float       buf[],                  // バッファー:格納先
                int         size1,                  // バッファーサイズ:1
                int         size2 );                // バッファーサイズ:2

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Merge」は、英単語「Merge」で合併する・併合する・
既に日本語的にマージとカタカナ言葉にも成って居る?!
★注意★ソーティングとしてマージソートを使用する時は、
大昔、コンピューターの外付け記憶装置が、磁気テープ≪
現在、家庭用のVTR(ビデオ・テープ・レコーダー)すら
過去の物に成って居るので更に前の音楽テープ・レコーダー
(初代のウォークマンも携帯可能なテープレコーダーとして
開発)とアナログの音楽や映像を記憶する装置にも馴染みが
無い人が多いと思いますが、コンピューターの補助記憶装置
としては、現在、バックアップ用途として未だに現役で使用
されている記憶装置です≫が主だった時に良く使われたソー
ティング技法です?!テープですのでデータはシーケンシャ
ルに前の方から順番にアクセスするのが記憶装置の使い方で
有る事は理解して頂きたい!その為、半導体メモリーの様に
ランダムアクセス≪任意に自由な場所をアクセス≫が、出来
ない為に前から順にデータを読みだすか、順に書き込むかし
か無いと不自由な操作が求められます!この環境下で効率良
く、ソーティングが出来るのが、マージソートです!
前提として2本のソーティング済みのデータ列が2本≪磁気
テープだと物理的にソーティング済みのデータが入っている
物が2本で半導体メモリーで行う場合、2本のデータ配列が
ソーティング済みと言う事です!≫有る事が、必要でコノ
関数「SortMerge()」は、2本のデータ配列から、新しく
2本のデータを合わせた(マージ)した結果データ配列≪
★備考★多分、勘の鋭い人は、結果の配列は2本のデータが
収まるサイズが必要と思われたと思います!その通り、結果
として格納される配列【ここでは、仮引数「float buf[]」
に対応する実引数で示される配列領域】≫を用意する
必要が有ります!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「double buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「float buf1[],」は、マージ対象の配列1本目
です!勿論、データは、仮引数「int sw,」で示された
昇順/降順に従ったソート済みで有る事が必要です!
仮引数「float buf2[],」は、マージ対象の配列2本目
です!勿論、データは、仮引数「int sw,」で示された
昇順/降順に
従ったソート済みで有る事が必要です!
仮引数「float buf[],」は、ソート結果を格納する配列です
サイズは、仮引数「float buf1[],float buf2[],」両方が
格納されるサイズ対応する実引数の領域が必要です!
仮引数「int size1,」は、仮引数「float buf1[],」の
サイズです!
仮引数「int size2」は、仮引数「float buf2[],」の
サイズです!
★備考★この関数は、データ数が極めて大きい時の用途に
使用する方法です!予め、中身がソーティングされて無い
大きなデータ配列を小分けにして前述したソート関数
「sort();」等アルゴリズムとしてクイックソートを使用し
たソートを使用してソートしたデータ配列をココの関数
「SortMerge()」でマージして1本のソート済みデータ
配列にする事が出来ます!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-69)関数「void SortMerge(int sw,
double buf1[],double buf2[],double buf[],
int size1,int size2);」

    void    SortMerge(                              // ソート(併合):double
                int         sw,                     // 0:昇順、 1:降順
                double      buf1[],                 // バッファー:1
                double      buf2[],                 // バッファー:2
                double      buf[],                  // バッファー:格納先
                int         size1,                  // バッファーサイズ:1
                int         size2 );                // バッファーサイズ:2

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Merge」は、英単語「Merge」で合併する・併合する・
既に日本語的にマージとカタカナ言葉にも成って居る?!
★注意★ソーティングとしてマージソートを使用する時は、
大昔、コンピューターの外付け記憶装置が、磁気テープ≪
現在、家庭用のVTR(ビデオ・テープ・レコーダー)すら
過去の物に成って居るので更に前の音楽テープ・レコーダー
(初代のウォークマンも携帯可能なテープレコーダーとして
開発)とアナログの音楽や映像を記憶する装置にも馴染みが
無い人が多いと思いますが、コンピューターの補助記憶装置
としては、現在、バックアップ用途として未だに現役で使用
されている記憶装置です≫が主だった時に良く使われたソー
ティング技法です?!テープですのでデータはシーケンシャ
ルに前の方から順番にアクセスするのが記憶装置の使い方で
有る事は理解して頂きたい!その為、半導体メモリーの様に
ランダムアクセス≪任意に自由な場所をアクセス≫が、出来
ない為に前から順にデータを読みだすか、順に書き込むかし
か無いと不自由な操作が求められます!この環境下で効率良
く、ソーティングが出来るのが、マージソートです!
前提として2本のソーティング済みのデータ列が2本≪磁気
テープだと物理的にソーティング済みのデータが入っている
物が2本で半導体メモリーで行う場合、2本のデータ配列が
ソーティング済みと言う事です!≫有る事が、必要でコノ
関数「SortMerge()」は、2本のデータ配列から、新しく
2本のデータを合わせた(マージ)した結果データ配列≪
★備考★多分、勘の鋭い人は、結果の配列は2本のデータが
収まるサイズが必要と思われたと思います!その通り、結果
として格納される配列【ここでは、仮引数「double buf[]」
に対応する実引数で示される配列領域】≫を用意する
必要が有ります!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「double buf[]」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「double buf1[],」は、マージ対象の配列1本目
です!勿論、データは、仮引数「int sw,」で示された
昇順/降順に従ったソート済みで有る事が必要です!
仮引数「double buf2[],」は、マージ対象の配列2本目
です!勿論、データは、仮引数「int sw,」で示された
昇順/降順に従ったソート済みで有る事が必要です!
仮引数「double buf[],」は、ソート結果を格納する配列
です!
サイズは、仮引数「double buf1[],double buf2[],」両方が
格納されるサイズ対応する実引数の領域が必要です!
仮引数「int size1,」は、仮引数「double buf1[],」の
サイズです!
仮引数「int size2」は、仮引数「double buf2[],」の
サイズです!
★備考★この関数は、データ数が極めて大きい時の用途に
使用する方法です!予め、中身がソーティングされて無い
大きなデータ配列を小分けにして前述したソート関数
「sort();」等アルゴリズムとしてクイックソートを使用し
たソートを使用してソートしたデータ配列をココの関数
「SortMerge()」でマージして1本のソート済みデータ配列
にする事が出来ます!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-70)関数「void SortMerge(int sw,
TypeCorr buf1[],TypeCorr buf2[],TypeCorr buf[],
int size1,int size2);」

    void    SortMerge(                              // ソート(併合):TypeCorr
                int         sw,                     // 0:昇順、 1:降順
                TypeCorr    buf1[],                 // バッファー:1
                TypeCorr    buf2[],                 // バッファー:2
                TypeCorr    buf[],                  // バッファー:格納先
                int         size1,                  // バッファーサイズ:1
                int         size2 );                // バッファーサイズ:2

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
「Merge」は、英単語「Merge」で合併する・併合する・
既に日本語的にマージとカタカナ言葉にも成って居る?!
★注意★ソーティングとしてマージソートを使用する時は、
大昔、コンピューターの外付け記憶装置が、磁気テープ≪
現在、家庭用のVTR(ビデオ・テープ・レコーダー)すら
過去の物に成って居るので更に前の音楽テープ・レコーダー
(初代のウォークマンも携帯可能なテープレコーダーとして
開発)とアナログの音楽や映像を記憶する装置にも馴染みが
無い人が多いと思いますが、コンピューターの補助記憶装置
としては、現在、バックアップ用途として未だに現役で使用
されている記憶装置です≫が主だった時に良く使われたソー
ティング技法です?!テープですのでデータはシーケンシャ
ルに前の方から順番にアクセスするのが記憶装置の使い方で
有る事は理解して頂きたい!その為、半導体メモリーの様に
ランダムアクセス≪任意に自由な場所をアクセス≫が、出来
ない為に前から順にデータを読みだすか、順に書き込むかし
か無いと不自由な操作が求められます!この環境下で効率良
く、ソーティングが出来るのが、マージソートです!
前提として2本のソーティング済みのデータ列が2本≪磁気
テープだと物理的にソーティング済みのデータが入っている
物が2本で半導体メモリーで行う場合、2本のデータ配列が
ソーティング済みと言う事です!≫有る事が、必要でコノ
関数「SortMerge()」は、2本のデータ配列から、新しく
2本のデータを合わせた(マージ)した結果データ配列≪
★備考★多分、勘の鋭い人は、結果の配列は2本のデータが
収まるサイズが必要と思われたと思います!その通り、結果
として格納される配列【ここでは、仮引数
「TypeCorr buf[]」に対応する実引数で示される配列領域】
≫を用意する必要が有ります!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!★注意★今まで
解説して来た関数の仮引数で最初が、単純な型でその後で
構造を持った型≪ここの「TypeCorr buf[]」≫などが出る
パターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
仮引数「TypeCorr buf1[],」は、マージ対象の配列1本目
です!
勿論、データは、仮引数「int sw,」で示された
昇順/降順に従ったソート済みで有る事が必要です!
仮引数「TypeCorrbuf2[],」は、マージ対象の配列2本目
です!
勿論、データは、仮引数「int sw,」で示された
昇順/降順に従ったソート済みで有る事が必要です!
仮引数「TypeCorr buf[],」は、ソート結果を格納する配列
です!
サイズは、仮引数「TypeCorr buf1[],TypeCorr buf2[],」
両方が格納されるサイズ対応する実引数の領域が必要です!
仮引数「int size1,」は、仮引数「TypeCorr buf1[],」の
サイズです!
仮引数「int size2」は、仮引数「TypeCorr buf2[],」の
サイズです!
★備考★この関数は、データ数が極めて大きい時の用途に
使用する方法です!予め、中身がソーティングされて無い
大きなデータ配列を小分けにして前述したソート関数
「sort();」等アルゴリズムとしてクイックソートを使用し
たソートを使用してソートしたデータ配列をココの関数
「SortMerge()」でマージして1本のソート済みデータ配列
にする事が出来ます!
★注意★構造体「TypeCorr」は、相関値関連です!この
データは、相関値の値でソーティングします!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

★★★備考★★★

ここで一旦、切れが良い「大方のソート関連」説明が
終わったのとカナリ大きな記述に成り講義を消化するのが
大変と考えたのでと考えてと
★筆者環境★東京都が、節電勧告を受けたのでパソコンを
一旦、シャットダウンする為です!
まだ、【ソート】関連が少し残って居ますので出来るだけ
この講義に追加する心算ですので乞うご期待と記載して
一旦、終わります!お疲れ様です!!

★備考★
解説『解説クラスTypeArray』でも記載したが、
noteエディタの変な特性でコピペした文章の半角「*」
が消されたり、空白「」が消される事が多々あります!
注意して手作業で修正している筈ですが、必ず、code
機能で表示して居る物を正しいとして確認して下さい

ここで「解説クラスCopyClear(4)」を
終わります!講義として切れ目が良いと判断したから
です!
続きは、「解説クラスCopyClear(5)」に
成ります引き続き御贔屓して受講して下さい!

(4-8-71)関数「int SortMult(int sw,
TypeArray* pkey,TypeArray* pa,int n,int offset,int l);」

    int     SortMult(                               // 複数配列ソート:個数小(~32767)
                int         sw,                     // 0:昇順、1:降順
                TypeArray   *pkey,                  // 配列情報:キー
                TypeArray   *pa,                    // 配列情報:従属
                int         n,                      // 配列個数 1..100
                int         offset,                 // 先頭からのOffset
                int         l                       // 配列のサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeArray* pkey,」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
「Mult」は、英単語「multiple」で多数との意味です!
仮引数「TypeArray* pkey,」は、配列データを示す
「class TypeArray* 」でソーティングのキー用です!
仮引数「TypeArray* pa,」は、配列データを示す
「class TypeArray* 」でソーティングの連動データ配列!
仮引数「int n,」は、連動データ配列自体の個数(組数)
詰り、仮引数「TypeArray* pa,」で示される配列が何組
有るかを示します!
仮引数「int offset,」は、ソート対象(仮引数「
TypeArray* pkey,」)配列や連動して並び変える仮引数
「TypeArray* pa,」データ配列の先頭からのオフセットを
示します!
仮引数「int l」は、ソート対象(仮引数「
TypeArray* pkey,」)配列や連動して並び変える仮引数
「TypeArray* pa,」データ配列の配列の中のデータサイズ
です!
★注意★直ぐ後で紹介する関数「int SortMultLarge()」が
存在する理由としてソート配列のデータサイズは32767
以下と小さな値に成りますが、通常使用されるサイズで更に
より早く処理完了する為に大きなサイズの場合は、次に紹介
する関数「int SortMultLarge()」で処理する事にしていま
す!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!

(4-8-72)関数「int SortMultLarge(int sw,
TypeArray* pkey,TypeArray* pa,int n,int offset,int l);」

    int     SortMultLarge(                          // 複数配列ソート:個数大(32768~)
                int         sw,                     // 0:昇順、1:降順
                TypeArray   *pkey,                  // 配列情報:キー
                TypeArray   *pa,                    // 配列情報:従属
                int         n,                      // 配列個数 1..100
                int         offset,                 // 先頭からのOffset
                int         l                       // 配列のサイズ
            );

「Sort」は、英単語「Sort」で意味「分類する、仕分けする
」・コンピューターサイエンス的にはデータを並べ替える
基本操作です!
仮引数「int sw,」は、この関数自体が、昇順≪小さい方
から順に大きく成る昇順≫ソート関数が「sw=0」で
降順≪大きい方から順に小さくなる降順≫ソート関数が
「sw=1」でと関数自体の機能選択します!
★注意★今まで解説して来た関数の仮引数で最初が、
単純な型でその後で構造を持った型≪ここの
「TypeArray* pkey,」≫などが出るパターンは稀です!
本来は関数名で昇順降順を分ける方が正当な方法ですが
昇順「ascendingorder」・降順「descendingorder」と馴染
みが無いにも程が有る英単語しか無いので仕方が無いから
「最初の引数」に切り替えスイッチを置く事にしました!
「Mult」は、英単語「multiple」で多数との意味です!
「Large」は、英単語「Large」で大きいと言う意味です!
ここでは、配列のサイズが32767と16ビット数を
超える場合★処理する内部で連動するインデックス配列を
インデックスが16ビット以内か大きいかとの事で処理速度
は遅く成るが、大きな数まで使用可に成るので「Large」を
関数名に付けました!
仮引数「TypeArray* pkey,」は、配列データを示す
「class TypeArray* 」でソーティングのキー用です!
仮引数「TypeArray* pa,」は、配列データを示す
「class TypeArray* 」でソーティングの連動データ配列!
仮引数「int n,」は、連動データ配列自体の個数(組数)
詰り、仮引数「TypeArray* pa,」で示される配列が何組
有るかを示します!
仮引数「int offset,」は、ソート対象(仮引数「
TypeArray* pkey,」)配列や連動して並び変える仮引数
「TypeArray* pa,」データ配列の先頭からのオフセットを
示します!
仮引数「int l」は、ソート対象(仮引数「
TypeArray* pkey,」)配列や連動して並び変える仮引数
「TypeArray* pa,」データ配列の配列の中のデータサイズ
です!
★詳細★は、後で説明:【ファイル「CopyClear120.cpp」が
対象】します!

(4-8-73)関数「int MultSorting(
BYTE *ptrsw,TypeArray *pa,int n);」

    int     MultSorting(                            // マルチソート
                BYTE        *ptrsw,                 // 0:昇順、1:降順
                TypeArray   *pa,                    // 配列1~100の情報
                int         n                       // 配列の個数 1..100
            );

「Mult」は、英単語「multiple」で多数との意味です!
「Sorting」は、英単語「Sort」で意味「分類する、仕分け
する」・コンピューターサイエンス的にはデータを並べ替え
る基本操作です!
★注意★ワザワザ「Sorting」と「ing」が付いて居るのは、
名前の区別です!
★備考★この関数では、「MultSorting」とキーデータが
複数の配列に有り最初の配列で大小が無い≪同じ値≫の
場合、次の配列で大小比較して行く事を行う関数です!
仮引数「BYTE *ptrsw,」は、この関数自体が、
昇順≪小さい方から順に大きく成る昇順≫ソート関数が
「*ptrsw=0」で降順≪大きい方から順に小さくなる降順≫
ソート関数が「*ptrsw=1」でと配列毎の大小関係を指示
します!
仮引数「TypeArray *pa,」は、配列データを示す
「class TypeArray 」でソーティングのキー用です!
仮引数「int n,」は、連動データ配列自体の個数(組数)
詰り、仮引数「TypeArray *pa,」で示される配列が何組
有るかを示します!
★詳細★は、後で説明:【ファイル「CopyClear110.cpp」が
対象】します!

(4-8-74)関数「int MultSortingshort (
BYTE *ptrsw,short **pa,int n,int l);」

    int     MultSortingShort(                       // MultSort:short単位配列群
                BYTE        *ptrsw,                 // 0:昇順、1:降順
                short       **pa,                   // 配列1~100の情報
                int         n,                      // 配列の個数 1..100
                int         l                       // 配列のサイズ
            );

「Mult」は、英単語「multiple」で多数との意味です!
「Sorting」は、英単語「Sort」で意味「分類する、仕分け
する」・コンピューターサイエンス的にはデータを並べ替え
る基本操作です!
★注意★ワザワザ「Sorting」と「ing」が付いて居るのは、
名前の区別です!
★備考★この関数では、「MultSorting」とキーデータが
複数の配列に有り最初の配列で大小が無い≪同じ値≫の
場合、次の配列で大小比較して行く事を行う関数です!
「short 」は、勿論、型名「short 」です!
★注意★使用頻度が高いと考えて
関数「int MultSorting()」の特別版として使い易く機能
だけ「型名short 」に特化した関数です!
仮引数「BYTE *ptrsw,」は、この関数自体が、
昇順≪小さい方から順に大きく成る昇順≫ソート関数が
「*ptrsw=0」で降順≪大きい方から順に小さくなる降順≫
ソート関数が「*ptrsw=1」でと配列毎の大小関係を指示
します!
仮引数「short **pa,」は、配列データへのポインタを示す
★注意★「**pa」と≪ポインタのポインタ≫に成って居る
事に気御付けて下さい!
仮引数「int n,」は、データ配列自体の個数(組数)
詰り、仮引数「short **pa,」で示される配列が何組
有るかを示します!
仮引数「int l」は、ソーティングされる配列の長さです!
★詳細★は、後で説明:【ファイル「CopyClear110.cpp」が
対象】します!

(4-8-75)関数「void ConvertXY2int (
TypeXY xy[],int buf[],int size,int mode=1);」

    void    ConvertXY2int(                          // TypeXY→int
                TypeXY      xy[],                   //  元のTypeXYバッファー
                int         buf[],                  //  変換先のintバッファー
                int         size,                   //  バッファーサイズ
                int         mode=1 );               //  モード
                                                    //   0:XY→int
                                                    //   1:YX→int(省略時)

「Convert」は、英単語「Convert」で変換!
「XY」は、XY座標データ!具体的には、
構造体「structTypeXY {}」を型とするデータ配列です!
「2」は、英単語「to」と発音が近いので「to」の省略と
して使用!
「int 」は、整数データ「int型」です!
詰り、構造体「structTypeXY {}」を型とするデータ配列と
整数データ「int型」配列の変換です!
仮引数「TypeXY xy[]」は、XY座標データの配列です!
仮引数「int buf[]」は、変換された結果格納データの
配列です!
仮引数「int size,」は、配列のサイズです!
仮引数「int mode=1」は、「mode=0」の時、int型
4バイトデータへX座標を上位2バイト、Y座標を下位
2バイトへ詰め直すモード選択です!
「mode=1(省略時)」の時、int型4バイトデータへ
Y座標を上位2バイト、X座標を下位2バイトへ詰め直す
モード選択です!
★詳細★は、後で説明:【ファイル「CopyClear110.cpp」が
対象】します!

(4-8-76)関数「void ConvertXYHV2int (
TypeXYHV xy[],int buf[],int size,int mode=1,
int inc=0);」

    void    ConvertXYHV2int(                        // TypeXYHV→int
                TypeXYHV    xy[],                   //  元のTypeXYHVバッファー
                int         buf[],                  //  変換先のintバッファー
                int         size,                   //  バッファーサイズ
                int         mode=1,                 //  モード
                                                    //   0:XY→int
                                                    //   1:YX→int(省略時)
                                                    //   2:HV→int
                                                    //   3:VH→int
                                                    //   4:YV→int
                int         inc=0 );                //  増加幅(0:省略時目印)

「Convert」は、英単語「Convert」で変換!
「XYHV」は、XY座標データ!具体的には、
構造体「struct TypeXY HV{}」を型とするデータ配列です!
「2」は、英単語「to」と発音が近いので「to」の省略と
して使用!
「int 」は、整数データ「int型」です!
詰り、構造体「struct TypeXY HV{}」を型とするデータ配列
と整数データ「int型」配列の変換です!
仮引数「TypeXY HVxy[]」は、XY座標データの配列です!
仮引数「int buf[]」は、変換された結果格納データの
配列です!
仮引数「int size,」は、配列のサイズです!
仮引数「int mode=1,」は、「mode=0」の時、int型
4バイトデータへX座標を上位2バイト、Y座標を下位
2バイトへ詰め直すモード選択です!
「mode=1(省略時)」の時、int型4バイトデータへ
Y座標を上位2バイトX座標を下位2バイトへ詰め直す
モード選択です!
「mode=2」の時、int型
4バイトデータへH水平幅を上位2バイト、V垂直幅を
下位2バイトへ詰め直すモード選択です!
「mode=3」の時、int型
4バイトデータへV垂直幅を上位2バイト、H水平幅を
下位2バイトへ詰め直すモード選択です!
「mode=4」の時、int型
4バイトデータへY座標を上位2バイト、V垂直幅を下位
2バイトへ詰め直すモード選択です!
仮引数「int inc=0」は、y座標を成分(Y・V)の増加幅
です!
★詳細★は、後で説明:【ファイル「CopyClear110.cpp」が
対象】します!

(4-8-77)関数「int BinarySearchX(
TypeXY buf[],int size,int x);」

    int     BinarySearchX(                          // 2分探査:X座標
                TypeXY      buf[],                  //  バッファー
                int         size,                   //  バッファーサイズ
                int         x );                    //  探査対象

「Binary」は、英単語「Binary」で「広く2を表す」とか
「Search」は、英単語「英単語」で「探す・探索」です!
「BinarySearch」でコンピューターサイエンス的には、
用語「バイナリーサーチ・二分探索」としてソート済みの
配列に対して目的のデータを探す事を意味します!
「X」は、X座標を意味します!詰り、この関数は、
X座標を探索する関数です!
仮引数「TypeXY buf[]」は、構造体「structTypeXY {}」と
XY座標組データ配列で既にソート済みの配列が必要です!
仮引数「int size,」は、配列のサイズ!
仮引数「int x);」は、探索目的のX座標の値です!
★詳細★は、後で説明:【ファイル「CopyClear130.cpp」が
対象】します!

(4-8-78)関数「int BinarySearchY(
TypeXY buf[],int size,int y);」

    int     BinarySearchY(                          // 2分探査:Y座標
                TypeXY      buf[],                  //  バッファー
                int         size,                   //  バッファーサイズ
                int         y );                    //  探査対象

「Binary」は、英単語「Binary」で「広く2を表す」とか
「Search」は、英単語「英単語」で「探す・探索」です!
「BinarySearch」でコンピューターサイエンス的には、
用語「バイナリーサーチ・二分探索」としてソート済みの
配列に対して目的のデータを探す事を意味します!
「Y」は、Y座標を意味します!詰り、この関数は、
Y座標を探索する関数です!
仮引数「TypeXY buf[]」は、構造体「struct TypeXY {}」と
XY座標組データ配列で既にソート済みの配列が必要です!
仮引数「int size,」は、配列のサイズ!
仮引数「int y);」は、探索目的のY座標の値です!
★詳細★は、後で説明:【ファイル「CopyClear130.cpp」が
対象】します!

(4-8-79)関数「int BinarySearchX(
TypeXYF buf[],int size,double x);」

    int     BinarySearchX(                          // 2分探査:X座標
                TypeXYF     buf[],                  //  バッファー
                int         size,                   //  バッファーサイズ
                double      x );                    //  探査対象

「Binary」は、英単語「Binary」で「広く2を表す」とか
「Search」は、英単語「英単語」で「探す・探索」です!
「BinarySearch」でコンピューターサイエンス的には、
用語「バイナリーサーチ・二分探索」としてソート済みの
配列に対して目的のデータを探す事を意味します!
「X」は、X座標を意味します!詰り、この関数は、
X座標を探索する関数です!
仮引数「TypeXY Fbuf[]」は、構造体「struct TypeXY F{}」
とXY座標組データ配列で既にソート済みの配列が必要
です!
仮引数「int size,」は、配列のサイズ!
仮引数「double x);」は、探索目的のX座標の値です!
★詳細★は、後で説明:【ファイル「CopyClear130.cpp」が
対象】します!

(4-8-80)関数「int BinarySearchY(
TypeXY Fbuf[],int size,double y);」

    int     BinarySearchY(                          // 2分探査:Y座標
                TypeXYF     buf[],                  //  バッファー
                int         size,                   //  バッファーサイズ
                double      y );                    //  探査対象

「Binary」は、英単語「Binary」で「広く2を表す」とか
「Search」は、英単語「英単語」で「探す・探索」です!
「BinarySearch」でコンピューターサイエンス的には、
用語「バイナリーサーチ・二分探索」としてソート済みの
配列に対して目的のデータを探す事を意味します!
「Y」は、Y座標を意味します!詰り、この関数は、
Y座標を探索する関数です!
仮引数「TypeXY Fbuf[]」は、
構造体「struct TypeXY F{}」とXY座標組データ配列で既に
ソート済みの配列が必要です!
仮引数「int size,」は、配列のサイズ!
仮引数「double y);」は、探索目的のY座標の値です!
★詳細★は、後で説明:【ファイル「CopyClear130.cpp」が
対象】します!

(4-8-81)関数「int BinarySearchX(
TypeXY Dbuf[],int size,double x);」

    int     BinarySearchX(                          // 2分探査:X座標
                TypeXYD     buf[],                  //  バッファー
                int         size,                   //  バッファーサイズ
                double      x );                    //  探査対象

「Binary」は、英単語「Binary」で「広く2を表す」とか
「Search」は、英単語「英単語」で「探す・探索」です!
「BinarySearch」でコンピューターサイエンス的には、
用語「バイナリーサーチ・二分探索」としてソート済みの
配列に対して目的のデータを探す事を意味します!
「X」は、X座標を意味します!詰り、この関数は、
X座標を探索する関数です!
仮引数「TypeXY Dbuf[]」は、構造体「struct TypeXY D{}」と
XY座標組データ配列で既にソート済みの配列が必要です!
仮引数「int size,」は、配列のサイズ!
仮引数「double x);」は、探索目的のX座標の値です!
★詳細★は、後で説明:【ファイル「CopyClear130.cpp」が
対象】します!

(4-8-82)関数「int BinarySearchY(
TypeXY Dbuf[],int size,double y);」

    int     BinarySearchY(                          // 2分探査:Y座標
                TypeXYD     buf[],                  //  バッファー
                int         size,                   //  バッファーサイズ
                double      y );                    //  探査対象

「Binary」は、英単語「Binary」で「広く2を表す」とか
「Search」は、英単語「英単語」で「探す・探索」です!
「BinarySearch」でコンピューターサイエンス的には、
用語「バイナリーサーチ・二分探索」としてソート済みの
配列に対して目的のデータを探す事を意味します!
「Y」は、Y座標を意味します!詰り、この関数は、
Y座標を探索する関数です!
仮引数「TypeXY Dbuf[]」は、構造体「struct TypeXY D{}」
とXY座標組データ配列で既にソート済みの配列が必要
です!
仮引数「int size,」は、配列のサイズ!
仮引数「double y);」は、探索目的のY座標の値です!
★詳細★は、後で説明:【ファイル「CopyClear130.cpp」が
対象】します!

★備考★
解説『解説クラスTypeArray』でも記載したが、
noteエディタの変な特性でコピペした文章の半角「*」
が消されたり、空白「 」が消される事が多々あります!
注意して手作業で修正している筈ですが、必ず、code
機能で表示して居る物を正しいとして確認して下さい

ここで一旦、切れが良い「ソート関連関数」で「public」
属性の関数説明が終わったので2月27日分の講義と
します!
後、少しだけソーティング関連(「private」属性)の
関数が残って居ますが、其れは後日!!

続きは、「解説クラスCopyClear(5)」に成り
ます!
「(5)」では、正規化相関「画像の比較」と大きな項目に
成ります!引き続き御贔屓して受講して下さい!

文末


この記事が気に入ったらサポートをしてみませんか?