합병정렬인데 결과값이 10   0    0   0   0   0   0    0  로 나와 뭐가 틀린지 모르겠어... 




#include

int A[8] = { 37, 10, 22, 30,35, 13,25,24 };

int length = sizeof(A) / sizeof(int);

int B[8] = {0, };

int i = 0, p=0 , q=8 , k = 0;


void Mergesort(int p, int q)

{

int k = (p + q) / 2;

if (q - p > 1) {

Mergesort(p, k);

Mergesort(k + 1, q);

}

int i = p, j;

if (p == q) {

return;

}

else {

j = k + 1;

}


int length= q - p + 1, count = 0;

while (count != length)

{

if (i > k || i > j) {

B[count++] = A[j++];

}

else if (j > q) {

B[count++] = A[i++];

}

else if (A[i]

B[count++] = A[i++];

}

else

{

B[count++] = A[j++];

}

for (int m = 0; m

A[p + m] = B[m];

}

}

int main(void)

{

printf("정렬 전    ");

for (i = 0; i

printf(" %d ", A[i]);

Mergesort(0, length - 1);

printf("\n정렬 후    " );

for (i = 0; i

printf(" %d ", B[i]);

return 0;

}