이 데이터 구조를 찾지 못했지만 해당 분야의 전문가는 아닙니다.
구조는 집합을 구현하며 기본적으로 변하지 않는 비교 가능한 요소의 배열입니다. 불변은 다음과 같습니다 (반복적으로 정의 됨).
길이가 1 인 배열은 병합 배열입니다.
길이가 2 ^ n 인 배열 (n> 0)은 병합 배열 iff입니다.
- 전반은 병합 배열이고 후반은 비어 있거나
- 첫 번째 배열은 꽉 찼고 정렬되고 두 번째 절반은 병합 배열입니다.
배열이 가득 찬 경우 정렬됩니다.
요소를 삽입하기 위해 두 가지 경우가 있습니다.
- 전반이 가득 차지 않은 경우 전반에 반복적으로 삽입하십시오.
- 전반이 가득 찬 경우 후반에 재귀 적으로 삽입하십시오.
- 재귀 단계 후 전체 배열이 가득 찬 경우 절반을 정렬하여 정렬하고 원래 길이의 두 배로 크기를 조정하십시오.
요소를 찾으려면 배열이 가득 찼을 때 이진 검색을 사용하여 두 부분을 모두 반복하십시오. (최대 오름차순 조각 이 있으므로 효율적 입니다.
구조는 정적 버전의 mergesort로 생각할 수 있습니다.
요소를 지우려면 어떻게해야하는지 명확하지 않습니다.
편집 : 구조에 대한 이해를 향상시킨 후.