int mid, i, j, k,temp[MAX_DATA];

領域が足りなくなってるんだと思うよ。
自動変数は呼び出しごとに別の実体が作られるから。

配列を静的変数にする
static int temp[MAX_DATA];
でどうだ?