2014-09-23 191 views
0

我需要通过其标题以简单的方式对书对象进行排序。然而,我写的选择排序算法不能正常工作,只是移动书本,但没有明显的顺序。我究竟做错了什么?按字母顺序排列数组

int j; 
int b; 

for (int i = 0; i < 20 - 1; i++) { 
    int minIndex = i; 

    for (j = i + 1; j < 20; j++) { 
     b = (bookA[j].getTitle().compareTo(bookA[minIndex].getTitle())); 
     if (b < 0) { 
      minIndex=j; 
     } 
    } 

    Book temp = bookA[i]; 
    bookA[i] = bookA[j]; 
    bookA[j] = temp; 
} 

for (int z = 0; z < 20; z++) 
    System.out.println(bookA[z].toString()); 

回答

0

您在使用j作为bookA[i] = bookA[j];的索引。问题在于,你在每次迭代中都覆盖了j的值,所以当它最终到达bookA[i] = bookA[j];时,它总是会是20

你想要的是用bookA[minIndex]来代替它。生成的代码如下所示:

int j; 
int b; 

for(int i=0;i<20-1;i++){ 
    int minIndex=i; 

    for(j=i+1;j<20; j++) { 
     b=(bookA[j].getTitle().compareTo(bookA[minIndex].getTitle())); 
     if(b<0){ 
      minIndex=j; 
     } 
    } 

    Book temp = bookA[i]; 
    bookA[i] = bookA[minIndex]; 
    bookA[minIndex] = temp; 
} 

for(int z=0;z<20;z++) 
    System.out.println(bookA[z].toString());