2012-04-27 27 views
7

Tôi cần nó để thực hiện thuật toán Dijkstra, và tôi có thực hiện riêng của tôi nhưng tài liệu mã của tôi sẽ dễ dàng hơn với các lớp riêng của java.java có xếp hàng ưu tiên tối thiểu được lập chỉ mục không?

+1

bạn có cố gắng tìm kiếm "hàng đợi ưu tiên java" trong công cụ tìm kiếm yêu thích của mình không? – cello

+2

Yup! Bạn có thử dùng * được lập chỉ mục * làm từ khóa bổ sung không? – Fatso

Trả lời

2

Ý bạn là 'được lập chỉ mục' là gì? Hàng đợi ưu tiên không hỗ trợ lập chỉ mục, trừ khi nó không được xếp hàng nữa.

Java hỗ trợ Hàng đợi ưu tiên chuẩn như C++ STL. Nó có thể được tìm thấy trong không gian tên java.util là PriorityQueue.

+1

Trích dẫn: * Trong nhiều ứng dụng, nó có ý nghĩa để cho phép khách hàng tham khảo các mục đã có trên hàng đợi ưu tiên. Một cách dễ dàng để làm như vậy là liên kết một chỉ số nguyên duy nhất với mỗi mục. * Tôi đã có một triển khai thực hiện, nhưng sẽ rất tuyệt nếu tôi có thể sử dụng một lớp Java thay vì phải tạo một tài liệu hoàn chỉnh để thực hiện. – Fatso

+0

@hexct được lập chỉ mục không có nghĩa là nó cho phép truy cập được lập chỉ mục. Chỉ mục là các số nguyên duy nhất được liên kết với các phần tử của hàng đợi. Giống như các giá trị số nguyên duy nhất của các phần tử hàng đợi. Robert Sedgewick đưa ra một phạm vi tốt trong cuốn sách của ông, Thuật toán. – isaolmez

+0

@Fatso Trích dẫn từ những gì? – EJP

2

Không, thư viện chuẩn Java không có cấu trúc dữ liệu như vậy. Tôi nghĩ hầu hết mọi người sử dụng quyền này: http://algs4.cs.princeton.edu/24pq/IndexMinPQ.java.html

+1

Nó luôn luôn tốt hơn để cung cấp cho một thông tin ngắn gọn như điều hướng người dùng đến liên kết để biết thêm thông tin, như thể liên kết bị hỏng, câu trả lời là không sử dụng. –

+0

@cohadar: Còn TreeMap thì sao? Nó cung cấp loại bỏ một đối tượng tùy ý (có thể được coi là truy cập được lập chỉ mục) trong thời gian O (log (n)). – beemaster

Các vấn đề liên quan