Tôi đã tìm kiếm thông qua các công việc có thể xung quanh để tìm kiếm nhị phân ở Erlang và tôi tìm thấy http://ruslanspivak.com/2007/08/15/my-erlang-binary-search/ Nhưng tôi đã tự hỏi liệu giải pháp trong blog có chạy trong O (lg n) hay không. Bây giờ kể từ khi lặp lại cho tìm kiếm nhị phân là: T (n) = T (n/2) + c mang lại cho tôi một thời gian thực hiện của O (lg n).Tìm kiếm nhị phân trong Erlang trong lg (n) thời gian
Vì trong mảng C, bạn có khả năng truy cập bất kỳ phần tử nào trong thời gian O (1). Nhưng trong xóa nếu truy cập vào giữa danh sách mất thời gian cn, sau đó tìm kiếm nhị phân chạy trong thời gian tổng thể tuyến tính như người nghèo như tìm kiếm tuyến tính.
Tôi đã xem các danh sách: nth/2 BIF để tìm mục thứ n trong danh sách nhưng tôi không chắc về thời gian thực hiện của nó.
Mọi nhận xét?
Đây là WRONG. Mô-đun Array là một cây tuple rất phẳng với hệ số phân nhánh khoảng 12, được chọn là một sự thỏa hiệp giữa thời gian ghi lại và thời gian truy cập. Thời gian truy cập cho một phần tử duy nhất vẫn là O (log N). Các cấu trúc phá hủy như bảng ETS nên cho phép truy cập thời gian không đổi, tùy thuộc vào dữ liệu và loại bảng, nhưng điều này làm tăng thêm chi phí sao chép giữa bảng và bất kỳ quá trình Erlang nào. Nếu không, một nhị phân ('<<" some_binary ">>') có thể cho phép một cái gì đó trông giống như số học con trỏ và tuples cũng có O (1) phức tạp để truy cập vào dữ liệu. –