퀵소트 인데 실행하면 다 잘되는데 마지막 값이 이상하게 다른값이 나온다 ㅜㅜ
void quickSort(int* b, int low, int high)
{
int q;
if(low<high)
{
q=partition(b,low, high);//분할함수 호출 기준값 q를 반환
quickSort(b, low, q-1);//q를 중심으로 왼쪽 배열 정렬
quickSort(b, q+1, high);//q를 중심으로 오른쪽 배열 정렬
}
}
int partition(int* b, int low, int high)
{
int x=b[high];//배열 맨 끝을 기준으로 한다.
int i=low-1;//i는 1구역의 끝지점
int j=low;//j는 3구역의 시작지점
int temp;//값을 교환하기위한 공간
while(j<high-1)//마지막 기준값 전까지 반복한다
{
if(b[j]<=x)//3구역값이 기준값보다 작거나 같으면 i값 증가 후 교환한다
{
i++;
temp=b[i];
b[i]=b[j];
b[j]=temp;
}
j++;//기준값보다 크면 j값을 증가시킨다
}
//기준값과 2구역 첫원소를 교환한다
temp=b[i+1];
b[i+1]=b[high];
b[high]=temp;
return i+1;// 기준값 리턴
}
ㅜㅜ 욕이라니 디버그 어떻게 하는건데 나 그냥 짜고 결과 값보고 수정할수 있는 거밖에 못하는 입문자입니다..
아 답답해 미치겠네
10개정도 숫자 넣고 그냥 작업 하나마다 print찍어봐... 너무 길어? 그럼 파일에다가 찍어.... fprintf같은걸로... 그리고 그 결과를 분석해봐라.. 이것도 못하냐? 이것도 디버깅의 일종이다.