按字母顺序排序数组

时间:2014-09-23 23:37:09

标签: java sorting alphabetical selection-sort

我需要以简单的方式按照标题对书籍对象进行排序。但是,我写的选择排序算法工作不正常,只是移动书籍,但没有明显的顺序。我做错了什么?

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());

1 个答案:

答案 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());