간선 리스트와 같이 성분 2개의 경우의 정렬일 때 어떻게 하는지 궁금합니다... ㅜ 제 생각대로 했는데 시간 뻑이 나네용
(시작점, 도착점)과 같이 구조체 Path와 그 성분 int start, int end으로 주어졌을 때 start 기준으로 정렬하되 같은 start 내에서 end를 기준으로 정렬하는 법 어떻게 구현하는지요...
int compare(const void* a, const void* b)
{
Path* num1 = (Path*)a, * num2 = (Path*)b;
if ( (num1->start < num2->start) || (num1->start == num2->start && num1->end < num2->end) ) return -1;
if ( (num1->start > num2->start) || (num1->start == num2->start && num1->end > num2->end) ) return 1;
return 0;
}
제 생각에서는 이렇게 하는 것 같고 예제코드는 돌아가는데...
막상 돌려보면 시간 초과가 나네용... ㅠㅜ
stdlib.h에서는 기준 하나로밖에 정렬이 안되나요?
start if문 밑에, end를 조건으로 if문을 추가하시면 되요.
댓글을 작성하려면 로그인해야 합니다.
dhyun0601 3년 전
간선 리스트와 같이 성분 2개의 경우의 정렬일 때 어떻게 하는지 궁금합니다... ㅜ 제 생각대로 했는데 시간 뻑이 나네용
(시작점, 도착점)과 같이 구조체 Path와 그 성분 int start, int end으로 주어졌을 때 start 기준으로 정렬하되 같은 start 내에서 end를 기준으로 정렬하는 법 어떻게 구현하는지요...
int compare(const void* a, const void* b)
{
Path* num1 = (Path*)a, * num2 = (Path*)b;
if ( (num1->start < num2->start) || (num1->start == num2->start && num1->end < num2->end) ) return -1;
if ( (num1->start > num2->start) || (num1->start == num2->start && num1->end > num2->end) ) return 1;
return 0;
}
제 생각에서는 이렇게 하는 것 같고 예제코드는 돌아가는데...
막상 돌려보면 시간 초과가 나네용... ㅠㅜ
stdlib.h에서는 기준 하나로밖에 정렬이 안되나요?