11650번 - 좌표 정렬하기
그냥 STL의 sort함수 쓰면 되는건 알고있지만 직접해보고싶어서 구글링해서 공부했던 merge sort로 풀어봤더니 시간초과가 나옵니다. merge sort는 O(nlogn)이라 괜찮을줄알았는데 제가 구현을 잘못한것같네요. 틀린 부분이나 안되는 이유 알려주세요.
16번쨰 줄이 매우 비효율적입니다. 크기가 n인 배열을 만드는 데에는 O(n)의 시간이 걸리고, merge 함수가 총 O(n)번 호출되니 총 O(n^2)의 시간이 걸리게 됩니다.
실제로 merge가 사용할 인덱스는 left부터 right까지뿐이기 때문에, 이 이외의 공간을 추가로 만들었다가 삭제하는 것이 비효율적입니다. 미리 하나만 크게 할당해두고 재사용하는 것이 낫습니다.
알겠습니다 감사합니다
댓글을 작성하려면 로그인해야 합니다.
hsh21097305 1년 전
그냥 STL의 sort함수 쓰면 되는건 알고있지만 직접해보고싶어서 구글링해서 공부했던 merge sort로 풀어봤더니 시간초과가 나옵니다. merge sort는 O(nlogn)이라 괜찮을줄알았는데 제가 구현을 잘못한것같네요. 틀린 부분이나 안되는 이유 알려주세요.