Java气泡排序ArrayList练习问题
我有一个java项目,我正在尝试使用bubble sort对书籍的Java气泡排序ArrayList练习问题,java,arraylist,bubble-sort,Java,Arraylist,Bubble Sort,我有一个java项目,我正在尝试使用bubble sort对书籍的ArrayList进行分级排序 我有三节课 书 图书馆 分类 我很难让冒泡排序正常工作,因为我尝试过的任何东西要么返回错误,要么返回随机字符/数字。如果有人能在这方面帮助我,我将不胜感激 书 图书馆 import java.util.ArrayList; public class Library { public static void main (String [] args) { ArrayList&
ArrayList
进行分级排序
我有三节课
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());
}
}
import java.util.ArrayList;
公共班级图书馆{
公共静态void main(字符串[]args){
ArrayList bookList=新建ArrayList();
Book book1=新书(“本书5”,5);
Book book2=新书(“本书2”,2);
Book book3=新书(“本书3”,3);
第四册=新书(“第四册”,第四册);
Book Book 5=新书(“本书1”,1);
图书目录。添加(第1册);
增加(第2册);
增加(第3册);
增加(第4册);
增加(第5册);
System.out.println(“原始序列”);
对于(int cnt=0;cnt
我一直在寻找不同的冒泡排序算法,但似乎没有任何效果。我想我的问题是类名和冒泡排序算法。我在这儿真是头痛。如果有人能帮助我,我将非常感激。这只是一个复杂的代码,没有任何理由
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());
}
}
}
}
公共类排序{
公共静态无效计算(ArrayList书目){
对于(i=0;ibookList.get(j).getRating()){
集合交换(图书清单,i,j);
}
System.out.println(bookList.get(out.getTitle()+“”+bookList.get(out.getRating());
}
}
}
}
希望这有帮助您在这里遇到了几个问题:
Books
类从Video
更改为Books
,但并没有在任何地方进行更新。请注意旧的Video
构造函数。我在库
和排序
类中看到对图书列表
和视频列表
的混合引用Library.main()
的最后一行中,您使用的videoList.get()
没有参数,这是无效的新的SortAlgorithm()
,但该类名为Sort
get()
和add()
,但从未从图书列表中删除。最终列表中的项目将比开始时多。您可能希望使用remove()
,而不是get()
此外,我会避免使for循环复杂化,并坚持使用标准的inti=0;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
}
}
for(int i=0;i
您离解决方案不远,看到这似乎是一个家庭作业,希望这足以让您达到目的。以下是我的做法:
图书类别:
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());
}
}
}
packagebubblesorter;
导入java.util.ArrayList;
公共班级图书馆{
公共静态void main(字符串[]args){
ArrayList bookList=新建ArrayList();
Book book1=新书(“本书5”,5);
Book book2=新书(“本书2”,2);
Book book3=新书(“本书3”,3);
第四册=新书(“第四册”,第四册);
Book Book 5=新书(“本书1”,1);
图书目录。添加(第1册);
增加(第2册);
增加(第3册);
增加(第4册);
增加(第5册);
System.out.println(“原始序列”);
System.out.println();
对于(int cnt=0;cnt
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);
}
}
}
}
}
packagebubblesorter;
导入java.util.ArrayList;
公共类LibraryHandler{
public void bubbleSort(ArrayList书目){
书本温度=新书(“本书0”,0);
int n=bookList.size();
对于(int i=0;i bookList.get(j).getRating()){
//交换
temp=图书列表。get(j-1);
bookList.set(j-1,bookList.get(j));
书单。设置(j,temp);
}
}
}
}
}
那太有趣了
这里可以改进类的名称。Library是主类,所以您可能只想将其称为main。正如我在评论中所说的,我认为惯例是使用名词作为类名,使用动词作为方法名,所以我建议您坚持这样做
为了让bubbleSort算法工作起来,我只是在谷歌上搜索了一下,然后从字面上复制了某人的实现,只改变了需要改变的部分:即
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);
}
}
}
}
}