c언어 합병정렬 오류
#include <stdio.h>
int sorted[100];
void merge(int list[], int left, int mid, int right) {
int i, j, k, l;
i = left;
j = mid + 1;
k = left;
while (i <= mid && j <= right) {
if (list[i] <= list[j])
sorted[k++] = list[i++];
else sorted[k++] = list[j++];
}
if (i > mid)
for (l = j; l <= mid; l++)
sorted[k++] = list[ l];
for (l = left; l <= right; l++)
list[l] = sorted[l];
}
void merge_sort(int list[], int left, int right) {
int mid;
if (left < right) {
mid = (left + right) / 2;
merge_sort(list, left, mid);
merge_sort(list, mid + 1, right);
merge(list, left, mid, right);
}
}
int main() {
int k;
int list[] = { 3, 5, 4, 7, 6, 8, 1, 2 };
printf("합병정렬 전 : ");
for (k = 0; k < 8; k++)
printf("%d ", list[k]);
merge_sort(list, 0, 7);
printf("\n");
printf("합병정렬 후 : ");
for (k = 0; k < 8; k++)
printf("%d ", list[k]);
return 0;
}
c언어 합병정렬 코드인데
출력이 이상하게 되서 어느 부분이 문제인지 모르겠습니다 ㅠㅠ
아직 댓글이 없습니다. 첫번째 댓글 작성자가 되어주세요 :)