Các documentation của Data.Array
đọc:Tốc độ nhanh như thế nào là Data.Array?
Haskell cung cấp mảng lập chỉ mục, trong đó có thể được coi như chức năng có tên miền đẳng cấu với tập con giáp của số nguyên. Các chức năng bị hạn chế theo cách này có thể được thực hiện một cách hiệu quả; cụ thể, một lập trình viên có thể mong đợi một cách hợp lý việc truy cập nhanh chóng vào các thành phần này một cách hợp lý.
Tôi tự hỏi làm thế nào nhanh chóng có thể (!)
và (//)
. Tôi có thể mong đợi O (1) phức tạp từ những điều này, như tôi sẽ có từ các đối tác cấp thiết của họ?
'(//)' thực sự là linar trong _size của mảng_, vì nó phải tạo một bản sao mới của mảng. Tuy nhiên, khi sử dụng các mảng có thể thay đổi, tôi cho rằng nó sẽ là tuyến tính trong số lượng các bản cập nhật. – hammar
@hammar nó là tuyến tính trong cả hai, vì nó phải sao chép mảng cũng như lặp qua danh sách. // là khá vô ích, mặc dù, trong một MArray bởi vì bạn không cần chức năng cập nhật hàng loạt. – alternative
Có, tất nhiên. Tuy nhiên, điều đó chỉ thực sự quan trọng nếu bạn đang cập nhật một số phần tử nhiều lần. – hammar