Tôi đã không quản lý để tìm cấu trúc dữ liệu này, nhưng tôi không phải là một chuyên gia trong lĩnh vực này.
Cấu trúc thực hiện một tập hợp, và về cơ bản là một mảng các phần tử có thể so sánh với một bất biến. Bất biến là như sau (được định nghĩa đệ quy):
Mảng có độ dài 1 là mảng hợp nhất.
Mảng có độ dài 2 ^ n (với n> 0) là mảng iff hợp nhất:
- nửa đầu là một mảng hợp nhất và nửa thứ hai trống hoặc
- mảng đầu tiên đầy đủ và được sắp xếp, và nửa sau là mảng hợp nhất.
Lưu ý rằng nếu mảng đầy, nó được sắp xếp.
Để chèn một phần tử, chúng ta có hai trường hợp:
- Nếu nửa đầu không đầy đủ, hãy chèn đệ quy trong nửa đầu.
- Nếu nửa đầu đầy, chèn đệ quy vào nửa sau.
- Sau bước đệ quy, nếu toàn bộ mảng đầy đủ, hợp nhất các nửa (được sắp xếp) và thay đổi kích thước của nó thành gấp đôi chiều dài ban đầu của nó.
Để tìm một phần tử, lặp lại ở cả hai nửa, sử dụng tìm kiếm nhị phân khi mảng đầy. (Điều này sẽ hiệu quả vì có nhiều nhất là các đoạn tăng dần ).
Cấu trúc có thể được coi là một phiên bản tĩnh của sự hợp nhất.
Không rõ người ta nên làm gì để xóa một phần tử.
Chỉnh sửa: sau khi cải thiện sự hiểu biết của tôi về cấu trúc.