이 프로그램의 메모리 제한은 8MB 인데, n이 1000만에 가까울 때 11번째 줄에서 약 38MB 의 메모리를 할당받으려고 합니다.
메모리가 부족하기 때문에 malloc 는 NULL을 반환하고, 이후에 arr에 무언가를 쓰려고 할 때 런타임 에러가 발생합니다.
이 문제는 시간복잡도 O(n log n) / 공간복잡도 O(n) 으로는 시간 제한 및 메모리 제한을 만족시킬 수 없습니다.
입력 데이터가 특정한 조건을 만족시킬 때 사용할 수 있는 시간복잡도 O(n) / 공간복잡도 O(1) 인 Counting Sort 정렬 알고리즘이 있습니다. 이 쪽을 공부해 보세요.
hnryu 6년 전
런타임 에러가 나는 이유를 모르겠습니다...