Prim';Java中的s和Kruskal算法

Prim';Java中的s和Kruskal算法,java,algorithm,Java,Algorithm,我必须用Java实现Prim和Kruskal的算法,以便在给定的无向加权图中找到最小生成树。我该怎么做?实现必须至少达到O(以下是我的实现: public class Library { // Add the missing implementation to this class java.util.ArrayList<Book> books; private static String openingHours = "The Library is open

我必须用Java实现Prim和Kruskal的算法,以便在给定的无向加权图中找到最小生成树。我该怎么做?实现必须至少达到O(以下是我的实现:

public class Library {
// Add the missing implementation to this class 

    java.util.ArrayList<Book> books;

    private static String openingHours = "The Library is open every day from 9AM to 5PM";
    private String a  ddress = "";
    private String[] collection = new String[10];
    private int collectionCount = 0;

    public Library(String libraries) {
        address = libraries;
        books = new java.util.ArrayList<>();
    }

    public
            String getAddress() {
        return this.address;
    }

    void setaddress(String address) {
        this.address = address;
    }

    public static void printOpeningHours() {
        System.out.println("Library Hours: ");
        System.out.println(openingHours);
    }

    public void printAddress() {
        System.out.println(address);
    }

    public void addBook(Book book) {
        books.add(book);
    }

    public void printAvailableBooks() {
        boolean bookPresent = false;
        for (Book book : books) {
            if (!book.isBorrowed()) {
                System.out.println(book.getTitle());
                bookPresent = true;
            }
        }
        if (!bookPresent) {
            System.out.println("No such book in our catalog");
        }
    }

    private void borrowBook(String title) {
        int found = 0;
        for (Book book : books) {
            if (book.getTitle().equals(title)) {
                if (found == 0) {
                    found = 1;
                }
                if (!book.isBorrowed()) {
                    book.borrowed();
                    found = 2;
                    break;
                };
            }
        }
        if (found == 0) {
            System.out.println("Sorry, this book is not in our catalog.");
        } else if (found == 1) {
            System.out.println("Sorry, this book is already borrowed.");
        } else if (found == 2) {
            System.out.println("You successfully borrowed " + title);
        }
    }

    public void returnBook(String title) {
        boolean found = false;
        for (Book book : books) {
            if (book.getTitle().equals(title) && book.isBorrowed()) {
                book.returned();
                found = true;
                break;
            }
        }
        if (found) {
            System.out.println("You successfully returned " + title);
        }
    }

    public static void main(String[] args) {
        Library firstLibrary = new Library("Moylish Park, Limerick");
        Library secondLibrary = new Library("Clare Street, Limerick");
        Library thirdLibrary = new Library("Nenagh Road, Thurles");

        // Add four books to the first library
        firstLibrary.addBook(new Book("Java How To Program"));
        firstLibrary.addBook(new Book("What's new in Java 7?"));
        firstLibrary.addBook(new Book("Java in a nutshell"));
        firstLibrary.addBook(new Book("Pro Android 2"));

        // Print Opening hours and the addresses
        Library.printOpeningHours();
        System.out.println();
        System.out.println("Library Addresses: ");
        firstLibrary.printAddress();
        secondLibrary.printAddress();
        thirdLibrary.printAddress();
        System.out.println();

        // Print the titles of all available books from both libraries
        System.out.println("Books available in the first library:");
        firstLibrary.printAvailableBooks();
        System.out.println();
        System.out.println("Books available in the second library:");
        secondLibrary.printAvailableBooks();
        System.out.println();
        System.out.println("Books available in the third library:");
        thirdLibrary.printAvailableBooks();
        System.out.println();

        // Return Java How To Program 
        System.out.println("Returning Java How To Program");
        firstLibrary.returnBook("Java How To Program");
        System.out.println();

        // Print the titles of available from the first library
        System.out.println("Books available in the first library:");
        firstLibrary.printAvailableBooks();
    }
}
公共类库{
//将缺少的实现添加到此类
java.util.ArrayList书籍;
private static String openingHours=“图书馆每天从上午9点到下午5点开放”;
私有字符串a ddress=“”;
私有字符串[]集合=新字符串[10];
私有int collectionCount=0;
公共图书馆(字符串库){
地址=图书馆;
books=newjava.util.ArrayList();
}
平民的
字符串getAddress(){
返回此地址;
}
无效设置地址(字符串地址){
this.address=地址;
}
公共静态void printOpeningHours(){
System.out.println(“库时:”);
System.out.println(openingHours);
}
公共地址(){
系统输出打印项次(地址);
}
公共无效地址簿(Book Book){
图书。添加(图书);
}
公共作废打印可用电子书(){
布尔bookPresent=false;
用于(书籍:书籍){
如果(!book.isfollowed()){
System.out.println(book.getTitle());
bookPresent=true;
}
}
如果(!bookPresent){
System.out.println(“我们的目录中没有这样的书”);
}
}
私人无效借阅簿(字符串标题){
int=0;
用于(书籍:书籍){
if(book.getTitle().equals(title)){
如果(找到==0){
发现=1;
}
如果(!book.isfollowed()){
借来的书;
发现=2;
打破
};
}
}
如果(找到==0){
对不起,这本书不在我们的目录中;
}else if(found==1){
System.out.println(“对不起,这本书已经借来了。”);
}else if(found==2){
System.out.println(“您成功借用”+标题);
}
}
公开作废归还书(字符串标题){
布尔值=false;
用于(书籍:书籍){
if(book.getTitle().equals(title)和&book.isfollowed()){
返回的书();
发现=真;
打破
}
}
如果(找到){
System.out.println(“您成功返回”+标题);
}
}
公共静态void main(字符串[]args){
图书馆firstLibrary=新图书馆(“利默里克莫伊利什公园”);
第二图书馆=新图书馆(“利默里克克莱尔街”);
图书馆第三图书馆=新图书馆(“瑟尔斯奈纳路”);
//向第一个库添加四本书
addBook(新书(“Java如何编程”);
addBook(新书(“Java7有什么新功能?”);
addBook(新书(“Java简而言之”);
addBook(新书(“Pro Android 2”);
//打印办公时间和地址
Library.printOpeningHours();
System.out.println();
System.out.println(“库地址:”);
firstLibrary.printAddress();
secondLibrary.printAddress();
第三个库。printAddress();
System.out.println();
//打印两个图书馆中所有可用图书的标题
System.out.println(“第一个图书馆提供的图书:”);
firstLibrary.printAvailableBooks();
System.out.println();
System.out.println(“第二个图书馆中提供的书籍:”);
secondLibrary.printAvailableBooks();
System.out.println();
System.out.println(“第三个图书馆提供的书籍:”);
第三图书馆。可打印电子书();
System.out.println();
//返回Java如何编程
println(“返回Java如何编程”);
returnBook(“Java如何编程”);
System.out.println();
//打印第一个库中可用的标题
System.out.println(“第一个图书馆提供的图书:”);
firstLibrary.printAvailableBooks();
}
}

那么您的具体问题是什么?