C/C++
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언어 합병정렬 코드인데

출력이 이상하게 되서 어느 부분이 문제인지 모르겠습니다 ㅠㅠ

​​​​​

 

댓글 0