void mergeSort(int *A, int p, int r)
{
if (p < r)
{
int q = (p + r) / 2;
int static k = 0;
if (k != 0)
{
printf("분리[%d]회 : ",k);
see(A, p, r);
}
k++;
mergeSort(A, p, q);
mergeSort(A, q + 1, r);
merge(A, p, q, r);
}
}
void merge(int *A, int p, int q, int r)
{
int * B = (int *)malloc(sizeof(int)* (r + 1));
int i = p;
int j = q + 1;
int t = 0;
while (i <= q && j <= r)
{
if (A[i] < A[j])
B[t++] = A[i++];
else
B[t++] = A[j++];
}
while (i <= q)
B[t++] = A[i++];
while (j <= r)
B[t++] = A[j++];
t = 0, i = p;
while (i <= r)
A[i++] = B[t++];
static int o = 0;
printf("병합[%d]회 : ", ++o);
see(A, p, r);
free(B);
}
void see(int *A, int p, int r)
{
int i;
for (i = p; i <= r; i++)
printf("%d ", A[i]);
printf("\\n");
}