퀵소트 결과값이 이상하게 출력됩니다.
시내
제목과 동일
퀵소트 결과값이 요상하게 출력됩니다
2를 한번썻는데 2가 두번나오지않나...
질문 내용 :
#include stdio.h
#include stdlib.h
#define max 10
#define swap(x,y,z) (x=y,y=z,x=z)
void quickSort(int *, int);
void qs(int *, int, int);
void main()
{
int a[10];
int size = sizeof(a)/sizeof(int);
printf(퀵소트할 첫번째 숫자를 입력하십시오:\n);
scanf(%d,&a[0]);
printf(퀵소트할 두번째 숫자을 입력하십시오:\n);
scanf(%d,&a[1]);
printf(퀵소트할 세번째 숫자을 입력하십시오:\n);
scanf(%d,&a[2]);
printf(퀵소트할 네번째 숫자을 입력하십시오:\n);
scanf(%d,&a[3]);
printf(퀵소트할 다섯번째 숫자을 입력하십시오:\n);
scanf(%d,&a[4]);
printf(퀵소트할 여섯번째 숫자을 입력하십시오:\n);
scanf(%d,&a[5]);
printf(퀵소트할 일곱번째 숫자을 입력하십시오:\n);
scanf(%d,&a[6]);
printf(퀵소트할 여덟번째 숫자을 입력하십시오:\n);
scanf(%d,&a[7]);
printf(퀵소트할 아홉번째 숫자을 입력하십시오:\n);
scanf(%d,&a[8]);
printf(퀵소트할 열번째 숫자들을 입력하십시오:\n);
scanf(%d,&a[9]);
getchar();
int i;
printf( 정렬 전 배열의 요소들을 출력합니다. ... \n );
for(i=0; i size; ++i)
printf(%d , a[i]);
quickSort(a, size);
printf( \n\n정렬 후 배열의 요소들을 출력합니다. ... \n );
for(i=0; i size; ++i)
printf(%d , a[i]);
getchar();
}
void quickSort(int*data, int count)
{
qs(data,0, count-1);
}
void qs(int*a, int low, int high)
{
int i, j, pivot, temp;
i = low;
j = high+1;
pivot = a[low];
if( low high )
{
do
{
do
{
i++;
}while(a[i] pivot);
do
{
j--;
}while(a[j] pivot);
if( i j )
{
swap(temp,a[i],a[j]);
}
else
break;
}while( 1 );
a[low] = a[j];
a[j] = pivot;
qs( a, low, j-1 );
qs( a, j+1, high);
}
}
결과값이나옵니다..
왜이러는걸까요..
void qs(int*a, int low, int high)
{
int i, j, pivot, temp;
i = low;
j = high+1;
pivot = a[low];
if( low high )
{
do
{
do
{
i++;
}while(a[i] pivot);
do
{
j--;
}while(a[j] pivot);
if( i j )
{
swap(temp,a[i],a[j]);
}
else
break;
&k;
}while( 1 );
a[low] = a[j];
a[j] = pivot;
qs( a, low, j-1 );
qs( a, j+1, high);
}
}
이 구문을 for문으로 바꿔야하나요...
-
목소리
일단 변수가 아무 데서나 마구 선언이 되는 것으로 봐서는 C가 아니고 C++로 생각됩니다.