[英]Why won't my bubble sort work? - Java
我試圖按對象的變量命名為“name”按字母順序對對象的arraylist進行排序。 這是我寫的代碼:
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;
}
}
}
我認為這個問題與使用swap的行有關,因為當我使用這個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
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.