외부 정렬과 내부 정렬의 차이점은 무엇입니까? 나는 입력 데이터가 RAM에 얼마나 저장되어 있는지 또는 알고리즘과 관련이 없는지 알 수 없다.외부 정렬과 내부 정렬의 차이점은 무엇입니까?
답변
내부 정렬에서는 정렬이 진행되는 동안 정렬 할 모든 데이터가 항상 메모리에 저장됩니다. 외부 정렬에서 데이터는 디스크와 같이 메모리 외부에 저장되며 작은 청크로만 메모리에로드됩니다. 외부 정렬은 일반적으로 데이터가 메모리에 완전히 들어갈 수없는 경우에 적용됩니다.
내부 정렬에서 셸 정렬과 같은 작업을 수행 할 수 있습니다. 원하는 모든 배열 요소에 원하는대로 액세스 할 수 있습니다. 외부 정렬에서는이 작업을 수행 할 수 없습니다. 배열은 전체적으로 메모리에 저장되지 않으므로 메모리의 모든 요소에 임의로 액세스 할 수없고 디스크에서 임의로 액세스하는 것은 대개 매우 느립니다. 외부 정렬 알고리즘은 최적의 방식으로 데이터 청크를로드 및 언로드해야합니다.
외부 메모리 - 한 번에 데이터의 일부를 가져 옵니까? – committedandroider
@committedandroider : 예, 모든 데이터를 사용 가능한 메모리에 저장할 수 없기 때문입니다. – sharptooth
http://en.wikipedia.org/wiki/External_sorting –
http://en.wikipedia.org/wiki/Internal_sort –
메모리 내 또는 메모리 부족 정렬의 차이점을 볼 수 없다면 너는 그 일에 관해 충분히 열심히 생각하지 않았다. 나는 둘 다 할 수있는 프로그램을 작성하라고 제안한다. 먼저 길이가 100 인 정수 목록을 정렬합니다. 다음에 4TB로 실행되는 정수 목록을 정렬합니다. –