퀵소트질문입니다.
미라
질문 제목 : 자꾸 런타임 오류가 뜨고 쓰레기 값이 뜨는데 이유를 모르겠어요 퀵소트함수부분과 파티션함수부분이 잘못되도 런타임오류가 뜨나요.. 질문 내용 :
#include stdio.h
#include stdlib.h
#include time.h
#define size 20
void swap(int *a, int *b);
int quicksort(int array[size], int i_left, int i_right);
int partition(int array[size], int i_left, int i_right, int pivotindex);
void swap(int *a, int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
int main(void)
{
int array[size];
int i;
int i_left=0;
int i_right=20;
srand((unsigned)time(null));
printf(퀵 정렬하기 전의 수 입니다. :);
for(i=0;isize;i++)
{
array[i]=rand()%99-1;
}
for(i=0;isize;i++)
{
printf(%d ,array[size]);
}
printf(\n);
printf(정렬하고 나서의 수 입니다. :);
quicksort(array,i_left,i_right);
for(i=0;isize;i++)
{
printf( %d ,array[i]);
}
return 0;
}
int partition(int array[size],int i_left,int i_right,int pivotindex)
{
int pivotvalue,storeindex,i;
pivotvalue = array[pivotindex];
swap (&array[pivotindex],&array[i_right]);
storeindex =i_left;
for (i =i_left;i=i_right - 1;i++)
{
if (array[i]=pivotvalue)
{
swap(&array[i],&array[storeindex]);
storeindex=storeindex+1;
}
}
if (array[storeindex] array[i_right])
swap(&array[storeindex],&array[i_right]);
return storeindex;
}
int quicksort(int array[size],int i_left,int i_right)
{
if (i_right i_left)
{
int pivotindex;
pivotindex=i_left + (i_right-i_left)/2;
pivotindex = partition(array, i_left, i_right, pivotindex);
quicksort(array, i_left, pivotindex - 1);
quicksort(array, pivotindex + 1, i_right);
}
return array[size];
}
-------------------------------------------------------------------------------------
이게 소스인데요 런타임오류가 뜨는데 변수 배열이 손상됬다고 뜨는가..아무튼 그런데 이유를 도저히 모르겠습니다..ㅠㅠ
도와주세요ㅠㅠ