gpt4 book ai didi

java - 为什么我的冒泡排序不起作用? - java

转载 作者:行者123 更新时间:2023-12-03 23:08:17 25 4
gpt4 key购买 nike

我试图通过名为“name”的对象变量按字母顺序对对象数组列表进行排序。这是我为此编写的代码:

public void sortName()
{
int j;

for ( j = 0; j < theBatters.size()-1; j++)
{
System.out.println(theBatters.get(j).getName().compareToIgnoreCase(theBatters.get(j+1).getName()));
if ( theBatters.get(j).getName().compareToIgnoreCase(theBatters.get(j).getName()) > 0 )
{ // ascending sort
Collections.swap(theBatters, j, j+1);
j=0;
}
}
}

我认为问题与使用交换的行有关,因为当我在使用此 sortName() 方法后打印 arraylist 时,所有内容都按相同的顺序排列,尽管此行返回的值大于 0应该:

System.out.println(theBatters.get(j).getName().compareToIgnoreCase(theBatters.get(j+1).getName()));

最佳答案

冒泡排序的名字意味着排序和未排序的项目存在冒泡。你只是忘记了这个事实。这是工作(我希望)代码:

    public void sortName()
{

for ( int i = 0; i < theBatters.size()-1; i++) // bigger outer bubble
for ( int j = i+1; j < theBatters.size()-1; j++) // smaller inner bubble
{ System.out.println(theBatters.get(i).getName().compareToIgnoreCase(theBatters.get(j).getName()));
if ( theBatters.get(i).getName().compareToIgnoreCase(theBatters.get(j).getName()) > 0 )
{ // ascending sort
Collections.swap(theBatters, i, j);
// j=0; // Not necessary and confusing. It is already in good order
}
}
}

关于java - 为什么我的冒泡排序不起作用? - java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40710815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com