minjun623   6년 전

qsort 라는 걸 알게 되서 쓰고 있는 중인데, 숫자가 부호 있는 32비트 정수일 경우 sort가 되지 않네요.

어떻게 수정해야 sort기능을 이용 할 수 있나요?

chogahui05   6년 전

어느 경우에 sort가 안 된다는 건가요? 안 되는 인풋 주실 수 있으신가요?

저 코드는 int형에 대해서는 sorting이 되는 겁니다.

minjun623   6년 전

main함수를

int main(void){ 

int N, M, i;

scanf("%d", &N); 

for (i=0; i<N; ++i){ 

scanf("%d", &data[i]); 

}

qsort(data, N, sizeof(int), compar);

for (i=0; i<N; ++i){ 

printf("%d\n", data[i]); 

}

 return 0;

}

수정 후,

2

1 -1

을 입력할 경우 1 -1 이 출력 됩니다.

djm03178   6년 전

저는 -1 1 나오는데요. 소트가 안 되는 경우는 따로 있죠. 7번째 줄처럼 대소비교를 하면 오버플로가 날 수가 있습니다. 예를 들면 20억에서 -20억을 빼면 40억이 되어야 하는데 이는 int로 표현이 안 되는 수죠.

그래서 comp를 올바르게 하려면 비교 연산자 <, >를 사용해서 나눠줘야 합니다.

chogahui05   6년 전

헐.. 저걸 못봤구나.. ㄷㄷ

예전에 c언어 학교에서 배울 때 학교 교재에 딱 저렇게 써 있어서.

어? 맞는 거 아냐 싶었는데.. 앞으로는 비교 연산자 써야 되겠네요.

저 문제는 상관 없을지 모르겠지만 익혀두는 게 좋을 거 같네요. 

댓글을 작성하려면 로그인해야 합니다.