bbbjihan   2년 전

퀵정렬 + 이진탐색을 통한 문제해결을 하려 하였으나

직접 둘 다 구현하여 실행하니 시간초과가 발생합니다.

둘 중에 어느 함수가 문제인지 확인하기 위해 퀵정렬을 대신하여 algorithm 헤더에서 제공하는 sort를 적용해보았는데 이는 시간초과가 발생하지 않고 통과됩니다.

그럼 제 퀵정렬이 문제가 있다는 것 같은데, 구글링해서 찾아본 코드들과 별반 다를 것이 없어 보입니다. 무엇인 문제인지 모르겠습니다.

아니면 이 문제는 직접 정렬하면 틀리는 문제인 것인가요? 퀵정렬로 푸신 분도 계신 것 같은데...

lcr7324   2년 전

퀵소트의 피봇을 배열의 첫 번째 값으로 잡는 경우에 시간복잡도가 O(n^2)이 되게 하는 저격 데이터가 있는 것으로 알고 있습니다.

bbbjihan   2년 전

답변 감사드립니다.

그렇다면 이 문제는 퀵소트를 직접 사용하지 못하게 하려고 테스트케이스가 구성되어 있다는 것인데, 이 문제는 어떤 정렬법을 사용해야 시간복잡도를 최소로 줄일 수 있는 건가요?

힙소트를 해야할까요?

lcr7324   2년 전

퀵소트를 하되 피봇을 랜덤으로 선택하는 방법이 있고, O(nlogn)의 시간 복잡도가 보장되는 정렬 알고리즘을 사용하는 방법도 있겠습니다. 말씀하신 힙소트도 그 중 하나겠네요.

bbbjihan   2년 전

친절한 답변 감사드립니다! 궁금한 점이 확실하게 해결됐습니다...! 복받으세요 선생님!

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