Đây là vấn đề mà tôi thực sự đang gặp khó khăn. Tôi cần phải hợp nhất hai chuỗi sắp xếp thành một chuỗi được sắp xếp đơn. Lý tưởng nhất, thuật toán nên được đánh giá lười biếng, và không yêu cầu bộ nhớ đệm nhiều hơn một mục từ mỗi chuỗi. Đây không phải là vấn đề khó giải quyết, và tôi đã có thể thiết kế một số giải pháp trong F #. Thật không may, mọi giải pháp mà tôi đưa ra đều có một số vấn đề.Làm cách nào để hợp nhất các chuỗi được sắp xếp?
Gọi đệ quy đến máy phát điện sau đó sử dụng năng suất !. Điều này tạo ra các giải pháp tìm kiếm thanh lịch, nhưng việc tạo ra một chuỗi cho mỗi mục là một kẻ giết người hiệu suất.
mã thực sự phức tạp và unmaintainable với công tắc trận đấu sâu-xếp chồng lên nhau, nhiều khối gần giống mã vv
Mã mà buộc F # thành một chế độ hoàn toàn thủ tục (rất nhiều giá trị có thể thay đổi, vv).
Và tất cả các ví dụ trực tuyến tôi đều có thể tìm thấy người sáng lập trên cùng một bãi.
Tôi có thiếu một điều gì đó hiển nhiên: như nó thực sự đơn giản hay không rõ ràng là không thể? Có ai biết về một giải pháp thực sự thanh lịch đó cũng là hiệu quả và chủ yếu là chức năng? (Nó không phải là hoàn toàn có chức năng.) Nếu không, tôi có thể sẽ kết thúc bộ nhớ đệm sau đó và sử dụng danh sách hoặc mảng.
Bạn có thể muốn xem xét điều này cho một ví dụ về thuật toán và chuyển nó sang F #. http://code.activestate.com/recipes/141934-merging-sorted-sequences/ –
@ James: thuật toán không phải là vấn đề, nó duy trì sự lười biếng và trật tự phức tạp và sang trọng cùng một lúc đó là vấn đề. Câu trả lời là 'LazyList'. – Brian
@James: Trang web công thức ActiveState đó có một số nội dung thú vị. – TechNeilogy