병합 정렬 소스 코드 질문입니다.
맛깔손
질문 제목 : 병합정렬하고 난 뒤의 수가 쓰레기값이 나옵니다.앞부분 숫자들은 조금 되는거같은데 그 뒤부터 쓰레기값이 나와요 질문 내용 :
#include stdio.h
#include stdlib.h
#include time.h
void merge_sort(int array[20],int low,int high);
void merge(int array[20],int low, int mid, int high);
void main()
{
int i;
int array[20];
int low=0;
int high=19;
srand((unsigned)time(null));
for(i=0; i20; i++)
{
array[i]=rand()%100;
}
printf(before mergesort :\n);
for(i=0;i20;i++)
{
printf(%d ,array[i]);
}
printf(\n);
printf(after mergesort :\n);
merge_sort(array,low,high);
for(i=0;i20;i++)
{
printf(%d ,array[i]);
}
printf(\n);
}
void merge_sort(int array[],int low,int high)
{
if(lowhigh)
{
int mid=(low+high)/2;
merge_sort(array,low,mid);
merge_sort(array,mid+1,high);
merge(array,low,mid,high);
}
}
void merge(int array[],int low,int mid,int high)
{
int result[20];
int i=low;
int j=mid+1;
int k=low;
int m;
while(i=mid && j=high)
{
if(array[i]array [j])
{
result[k]=array[i];
i++;
k++;
}
else
{
result[k]=array[j];
j++;
k++;
}
}
if (imid)
{
for(m=j;m=high;m++)
result[k]=array[m];
k++;
}
else
{
for(m=i;m=mid;m++)
result[k]=array[m];
k++;
}
for(m=low;m=high;m++)
array[m]=result[m];
}
아무리봐도틀린곳을모르겠습니다..ㅠㅠ도와주세요!
-
한국녀
죄송해요ㅠㅠ수정했슴니다!!
-
나미
적어도 복사 허용을 해놓으셔야 한번 돌려볼수 잇을거 같은데요