merge sort 계속 에러나네요..ㅠ 도와주세요...ㅠㅠ
시내
질문 제목 : merge sort를 구현하는데요... 자꾸 배열 A에 대한 런타임 에러가 나네요... 인덱스보다 오버되는 듯 싶습니다.ㅠ.질문 요약 :merge sort를 구현하는데요... 자꾸 배열 A에 대한 런타임 에러가 나네요... 인덱스보다 오버되는 듯 싶습니다.ㅠ.질문 내용 :/*
*/#include stdio.h
#include stdlib.h
#include time.hvoid print(int A[], int index);
void merge_sort(int A[], int p, int r);
void merge(int A[], int p, int q, int r);int main()
{
int A[100]; int num;
int i; srand((unsigned)time(NULL)); for(i=0; i100; i++) // 랜덤값을 집어넣습니다.
{
num = rand() % 10000;
A[i] = num;
} merge_sort(A, 0, 100);
print(A, 100); return 0;
}void print(int A[], int index) // 원소를 프린트하는 함수입니다.
{
inti;
for(i=0; iindex; i++)
{
printf(%d , A[i]);
if(!(i%10))
printf(\n);
}
}void merge_sort(int A[], int p, int r)
{
int q; if(pr)
{
q = (p + r) / 2;
merge_sort(A, p, q);
merge_sort(A, q+1, r);
merge(A, p, q, r);
}
}void merge(int A[], int p, int q, int r)
//왠지 여기서부터 문제가 생기는 듯 싶은데요...
//내림차순으로 정렬하는건데 계속 배열 A가 넘치는지 런타임에러가 발생하네요...ㅠ
{ int n1 = q - p + 1;
int n2 = r - q;
int L[100];
int R[100];
int k, i, j; for(i=1; i=n1; i++)
{
L[i] = A[p+i-1];
} for(j=1; j=n2; j++)
{
R[j] = A[q+j];
} L[n1+1] = 102932; // 이 부분은 경계부분으로 무한대를 넣으라고 수도코드에 되어있는데 일단 넣었습니다...ㅠ
R[n2+1] = 103941; i = 1;
j = 1; for(k=p; k=r; k++)
{
if(L[i] = R[j])
{
A[k] = L[i];
i = i + 1;
}
else
{
A[k] = R[j];
j = j + 1;
}
}
}