hsh21097305   1년 전

그냥 STL의 sort함수 쓰면 되는건 알고있지만 직접해보고싶어서 구글링해서 공부했던 merge sort로 풀어봤더니 시간초과가 나옵니다. merge sort는 O(nlogn)이라 괜찮을줄알았는데 제가 구현을 잘못한것같네요. 틀린 부분이나 안되는 이유 알려주세요.

djm03178   1년 전

16번쨰 줄이 매우 비효율적입니다. 크기가 n인 배열을 만드는 데에는 O(n)의 시간이 걸리고, merge 함수가 총 O(n)번 호출되니 총 O(n^2)의 시간이 걸리게 됩니다.

실제로 merge가 사용할 인덱스는 left부터 right까지뿐이기 때문에, 이 이외의 공간을 추가로 만들었다가 삭제하는 것이 비효율적입니다. 미리 하나만 크게 할당해두고 재사용하는 것이 낫습니다.

hsh21097305   1년 전

알겠습니다 감사합니다

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