マージソート

擬似言語だとしっくりこないから、
C言語にて書きなおしてみる。(かなりいい加減だけど)
 
#incllude <stdio.h>
 
main()
{
     int A[n], X[n], Y[n];     //nは定数として扱う
     int m, p;
     int max = 9999;
     int j = 1;
     while(j < N)
     {
          k = 0;
          while( k <= (N – j * 2) )
          {
               m = 1;
               while( m <= j )
               {
                    X[m] = A[k + m];
                    Y[m] = A[k + m + j];
                    m = m + 1;
               }
               X[j + 1] = max;
               Y[j + 1] = max;
     //       (a)
               m = 1;
               while(m <= j *2)
               {
               if( X[p] < Y[q] )
               {
     //                    (b)
                    }else{
     //                    (c)
                    }
                    m = m + 1;
               }
               k = k + j *2;
          }
          j = j * 2;
     }
}
 
……なんだこれ。
整数型qの宣言がないのにいきなり28行目で使われてるし汗
意味わからねえヽ(;´Д`)ノ
むぅ…とりあえず……
(a)は
p ← 1
q ← 1
だにゃー
(b)と(c)は……むぅ
添え字はk + mかなー
ちっちゃいほうが配列にはいるからー
(b)にはA(k + m) ← X(p)
(c)にはA(k + m) ← Y(q)
がはいるな。
んで、(b),(c)にはp++,q++がはいるはず。
ふむ、じゃあ、
(a)
p ← 1
q ← 1
(b)
A(k + m) ← X(p)
p ← p + 1
(c)
A(k + m) ← Y(q)
q ← q + 1
 
かな。
 
どれどれ……正解♪
とまあ……こんな感じでいいのかな(ナニ
すっげえ適当だなあ……
広告
カテゴリー: 基本情報技術者試験 パーマリンク