是否可以在java中检查二进制搜索中的特殊字符?

时间:2013-11-21 12:31:05

标签: java binary-search-tree stringbuffer

我的String Buffer有“_ @”。 。我有二进制搜索方法,为char'返回false'。'。我找不到如何检查二进制搜索中的特殊字符。请帮助找出这个问题。

2 个答案:

答案 0 :(得分:3)

你打错了功能。像这样改变..

public static void main(String[] args) {
    StringBuffer b = new StringBuffer();
    b.append(" _ @ .");
    boolean isValid = false;
    isValid = isValueThere(b, '.');
    System.out.print(isValid);
}

isValueThere(b, '.');返回true。

答案 1 :(得分:1)

如果我错了,请纠正我,但二进制搜索用于排序数组。

您正尝试对字符数组_ @ .执行二进制搜索 就ASCII码而言,如下所示:[32][95][32][64][32][46]

So, when you call your function:
Low: 0 - Middle: 2 - High: 5
Seach: 46 - Actual: 32
Low: 3
Low: 3 - Middle: 4 - High: 5
Seach: 46 - Actual: 32
Low: 5
Low: 5 - Middle: 5 - High: 5
Found!!!
true

但是,当您取出空格并在"_@."

上运行时
Low: 0 - Middle: 1 - High: 2
Seach: 46 - Actual: 64
High: 0
Low: 0 - Middle: 0 - High: 0
Seach: 46 - Actual: 95
High: -1
Not found!!!
false

总结:

如果你完全确定你将在排序的数组上运行搜索,那么这没关系。

但是,就像你的情况一样,如果你不能保证你已经排序了数组,那么就不要使用二进制搜索。