我需要以简单的方式按照标题对书籍对象进行排序。但是,我写的选择排序算法工作不正常,只是移动书籍,但没有明显的顺序。我做错了什么?
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 :(得分: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());