merge sort는 확실히 시간복잡도에서 가장 우수한 편에 속하긴 하지만, 그건 어디까지나 분할 정복이 제대로 이루어질 때의 얘기입니다.
분할되는 태스크는 그 크기가 작아져야하는데, 위 코드에선 분할되어 작아지는 태스크 안에서 크기 N짜리 배열을 두 개나 만들고 초기화하고 있어 실제로는 전혀 작아지지 않고 있습니다.
위 정렬 방식의 시간복잡도를 보다 엄밀히 분석해보면, 실제 시간복잡도는 N^2 혹은 그 이상입니다.
그리고 재귀로 몇 단계씩 호출되어 들어가는 함수 내에서 저렇게 배열을 크게 만들면 스택 터질 것 같습니다...
ddhhyy2000 9일 전
merge sort 방식이 시간복잡도가 가장 낮다고 하여 c언어로 구현한 코드입니다. merge sort를 활용하였는데도 시간초과가 나오는데, 위 코드에서 무엇이 시간초과의 원인이 되는 것인지 알려주시면 감사하고, 왜 그 원인이 되는 것인지도 알려주시면 감사합니다. 추가적으로 다른 지적사항이 있어도 가감없이 말씀해주시면 감사히 받겠습니다.