二元搜索与2个元素

时间:2018-01-05 07:28:53

标签: java binary-search

我正在使用二进制搜索来查找数组中的对象。 有用。但是,如果数组只有2个对象,而我想要找到的对象在第2个索引中,我得到-1。

mid = (low + high) / 2;

mid是0,然后如果songName不存在则返回-1

public int isSongExist(String songName) {
    int low = 0;
    int high = this.songs.length - 1;
    int mid;

    while (low <= high) {
        mid = (low + high) / 2;

        if (this.songs[mid].getSongName().compareToIgnoreCase(songName) < 0) {
            low = mid + 1;
        } else if (songs[mid].getSongName().compareToIgnoreCase(songName) > 0) {
            high = mid - 1;
        } else {
            return mid;
        }
    }
    return -1;
}

1 个答案:

答案 0 :(得分:1)

您的问题不在您发布的代码中。这是它的一个简化版本,证明了它的正确性。

groupby

因此,您的歌曲列表可能被错误排序或其他错误。我建议你使用调试工具来确认你的假设。