[英]insertion sort using linked list for Book objects
我正在嘗試使用插入排序按書名的字母順序對書的鏈接列表進行排序。
到目前為止我做了什么:
public void insertSorted(Book book){
if(books.getfirst()==null)
books.addFirst(book); //books is the LinkedList name
Node<Book> current =books.getfirst();
for(int i=0; i<books.getSize(); i++){
if(book.getTitle().compareToIgnoreCase(current.element.getTitle())<=0){
books.add(book, i);
}
}
Linkedlist中的add方法:
public void add(Object x,int index){
if(index==0)addFirst(x);
else if(index>=getSize())addLast(x);
else{
Node current=first;
for(int i=0; i<index-1;i++)
current=current.next;
Node temp = new Node(x);
temp.next=current.next;
current.next=temp;
count++;
}
}
我到底在做什么錯?
for(int i=0; i<books.getSize(); i++){
if(book.getTitle().compareToIgnoreCase(current.element.getTitle())<=0){
books.add(book, i);
}
使用此語句(上面),您不會增加正在比較的當前Node
。 在for(;;)
循環的每次迭代中,您都在比較要添加到List
第一個元素的新Book
。
下面的代碼示例應解決此問題:
for(int i=0; i<books.getSize(); i++){
if(book.getTitle().compareToIgnoreCase(current.element.getTitle())<=0){
books.add(book, i);
break;
}
else {
current = current.next;
}
編輯:根據@Eden Lu答案包括必需的break語句
將書添加到書中后,需要打破循環
books.add(書,I); 打破;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.