>>486
http://codepad.org/ygFP51EW

>>484 は
「x[] が使い尽くされて y[] にまだ残っているとき,y[] から a[] にコピーする.」
「y[] が使い尽くされて x[] にまだ残っているとき,x[] から a[] にコピーする.」
というロジックがない
それではちゃんと動かない.

printf() を要所要所に入れて値の変化を追いかければわかる.
マージソートの大局的な感じは掴んでいるようだが,それだけではプログラムは書けない
要素が1個とか2個になったときにも,想定の動きをしているか確認したか?