hnryu   7년 전

런타임 에러가 나는 이유를 모르겠습니다...

bupjae   7년 전

이 프로그램의 메모리 제한은 8MB 인데, n이 1000만에 가까울 때 11번째 줄에서 약 38MB 의 메모리를 할당받으려고 합니다.

메모리가 부족하기 때문에 malloc 는 NULL을 반환하고, 이후에 arr에 무언가를 쓰려고 할 때 런타임 에러가 발생합니다.


이 문제는 시간복잡도 O(n log n) / 공간복잡도 O(n) 으로는 시간 제한 및 메모리 제한을 만족시킬 수 없습니다.

입력 데이터가 특정한 조건을 만족시킬 때 사용할 수 있는 시간복잡도 O(n) / 공간복잡도 O(1) 인 Counting Sort 정렬 알고리즘이 있습니다. 이 쪽을 공부해 보세요.

hnryu   7년 전

조언 주신데로 counting sort 정렬 알고리즘 나름대로 이해하여 코드를 구현하였습니다.

코드가 잘못된것인지 아직 이해가 부족한것인지 런타임에러가 계속 출력되어서요. 다시한번 조언구합니다.

bupjae   7년 전

counting sort 를 올바로 구현했다면 MAXSIZE 배열을 잡을 필요가 없어집니다.

조금만 더 고민해 보세요.

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