#include <stdio.h>
#define I 6
int copy[I];
void merge(int nums[],int n,int k,int max){
int i = n;
int j=k+1;
int m = 0;
while(i<=k && j<=max){
if(nums[i]<=nums[j]){
copy[m]=nums[i];
m++;
i++;
}
else{
copy[m]=nums[j];
j++;
m++;
}
}
while(i<=k){
copy[m]=nums[i];
i++;
m++;
}
while(j<=max){
copy[m]=nums[j];
j++;
m++;
}
m--;
while(m>=0){
nums[m]=copy[m];
m--;
}
}
void mergesort(int nums[],int n,int max){
if (n<max){
int k=(n+max)/2;
mergesort(nums,n,k);
mergesort(nums,k+1,max);
merge(nums,n,k,max);
}
else{
return;
}
}
int main (void){
int nums[I]={5,3,7,2,9,1};
mergesort(nums,0,I-1);
for(int t=0;t<I;t++){
printf("%d",nums[t]);
}
}
뭐가 문제일까요? ㅠㅠ 알려주십시오
예측할 수 없는 결과가 나오네요. 어이없는 실수한 거 같은데 모르겠습니다
댓글 0