합병정렬인데 결과값이 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;
}
나도 오늘 병합정렬로 백준 조졌는데ㅋㅋ - dc App
if(i>k||i>j)에서 두번째 조건이 절대로 불가능함.i는 p에서 k까지 이동, j는 k+1에서 q까지 이동하면서 훑는데, 그럼 당연히 i가 j보다 클수없음ㅇㅇ - dc App