我有一个java项目,我尝试使用冒泡排序按评级对ArrayList
本书进行排序。
我有三节课。
我无法让冒泡排序起作用,因为我尝试的所有内容都会返回错误或随机字符/数字。如果有人能帮助我,我会非常感激。
图书
public class Books {
String title;
int rating;
public Video(String pTitle, int pRating) {
title = pTitle;
rating = pRating;
}
public String getTitle() {
return title;
}
public int getRating() {
return rating;
}
}
库
import java.util.ArrayList;
public class Library {
public static void main (String [] args) {
ArrayList<Book> bookList = new ArrayList<Books>();
Book book1 = new Book ("ThisBook 5", 5);
Book book2 = new Book ("ThisBook 2", 2);
Book book3 = new Book ("ThisBook 3", 3);
Book book4 = new Book ("ThisBook 4", 4);
Book book5 = new Book ("ThisBook 1", 1);
bookList.add(book1);
bookList.add(book2);
bookList.add(book3);
bookList.add(book4);
bookList.add(book5);
System.out.println("Original sequence");
for (int cnt = 0; cnt < bookList.size(); cnt++)
{
System.out.println(bookList.get(cnt).getTitle() + " " + bookList.get(cnt).getRating());
}
System.out.println( "\r" + "Sorted By Rating");
SortAlgorithm sortObject = new SortAlgorithm();
sortObject.calc(bookList);
System.out.println(bookList.get().getTitle() + " " + bookList.get().getRating());
}
}
我一直在寻找不同的冒泡排序算法,但似乎没有任何效果。我认为我的问题一直是类名和冒泡排序算法。我真的在这里敲我的头。如果有人能帮助我,我真的很感激。
答案 0 :(得分:0)
这只是无缘无故的复杂代码..
public class Sort {
public static void calc(ArrayList<Book> bookList) {
for (i = 0 ; i < bookList.size() ; i++) {
for (j = i+1; j < bookList.size() ; j++) {
if (bookList.get(i).getRating() > bookList.get(j).getRating()) {
Collections.swap(bookList, i, j);
}
System.out.println(bookList.get(out).getTitle() + " " + bookList.get(out).getRating());
}
}
}
}
希望有所帮助
答案 1 :(得分:0)
这里有几个问题:
您似乎已经将Books
课程从Video
更改为Books
,但您并未在任何地方对其进行更新。注意旧的Video
构造函数。我在bookList
和videoList
类中看到Library
和Sort
的混合引用。
在Library.main()
的最后一行,您使用videoList.get()
而没有参数,该参数无效。
您尝试创建new SortAlgorithm()
,但该类名为Sort
算法如下:
您正在使用get()
和add()
,但您永远不会从bookList中删除。在最终列表中,您最终会得到比您开始时更多的项目。您可以使用get()
而不是remove()
。
另外,我避免使for循环复杂化并坚持使用标准int i = 0; i < bookList.size(); i++
设置。
for (int i = 0; i < bookList.size(); i++) {
for (int j = 0; j < bookList.size() - 1; j++) {
// get the books you want to compare (remove them from the list)
// insert them back into the list in the correct order
}
}
你离解决方案并不太远,并且看到这似乎是家庭作业,希望能够让你到达那里。
答案 2 :(得分:0)
我是这样做的:
图书课程:
package bubbleSorter;
public class Book {
String title;
int rating;
public Book(String pTitle, int pRating) {
title = pTitle;
rating = pRating;
}
public String getTitle() {
return title;
}
public int getRating() {
return rating;
}
}
图书馆班:
package bubbleSorter;
import java.util.ArrayList;
public class Library {
public static void main (String [] args) {
ArrayList<Book> bookList = new ArrayList<Book>();
Book book1 = new Book ("ThisBook 5", 5);
Book book2 = new Book ("ThisBook 2", 2);
Book book3 = new Book ("ThisBook 3", 3);
Book book4 = new Book ("ThisBook 4", 4);
Book book5 = new Book ("ThisBook 1", 1);
bookList.add(book1);
bookList.add(book2);
bookList.add(book3);
bookList.add(book4);
bookList.add(book5);
System.out.println("Original sequence");
System.out.println();
for (int cnt = 0; cnt < bookList.size(); cnt++)
{
System.out.println(bookList.get(cnt).getTitle() + " " + bookList.get(cnt).getRating());
}
System.out.println( "\r" + "Sorted By Rating");
System.out.println();
LibraryHandler libraryHandler = new LibraryHandler();
libraryHandler.bubbleSort(bookList);
for (int cnt = 0; cnt < bookList.size(); cnt++)
{
System.out.println(bookList.get(cnt).getTitle() + " " + bookList.get(cnt).getRating());
}
}
}
LibraryHandler类:
package bubbleSorter;
import java.util.ArrayList;
public class LibraryHandler {
public void bubbleSort(ArrayList<Book> bookList) {
Book temp = new Book("ThisBook 0", 0);
int n = bookList.size();
for (int i =0;i<n;i++) {
for (int j = 1; j < n-i; j++) {
if (bookList.get(j-1).getRating() > bookList.get(j).getRating()) {
// swap them
temp = bookList.get(j-1);
bookList.set(j-1, bookList.get(j));
bookList.set(j, temp);
}
}
}
}
}
非常有趣!
这里可以改进类的名称。库是主类,因此您可能只想将其称为Main。正如我在评论中所说,我认为惯例是使用名词作为类名和动词作为方法名称,所以我建议你坚持这一点。
为了让bubbleSort算法正常工作,我只是用Google搜索并直接复制某人的实现,只更改了必须更改的位:他们用于排序一组int。
以下是指向该实施页面的链接:
http://www.java-examples.com/java-bubble-sort-example
不要担心该页面顶部可能出现或未出现的所有警告:下面的代码是我改编的,它运行良好。