我想知道如何在java中的字符数组上进行二进制搜索
java中有一个内置函数,但我不想使用它,任何帮助或指针都会非常感激。
我刚从下面开始,因为我知道二进制搜索需要对数组进行排序
char[] whitelist = {'f','e','d','c','b','a'};
Arrays.sort(whitelist);
for (char ch : whitelist) {
System.out.println("The values after sorting\n"+ch);
}
答案 0 :(得分:2)
就像Java一样简单:
int binarySearch(char[] a, char key) {
int low = 0;
int high = a.length - 1;
while (low <= high) {
int mid = (low + high) >>> 1;
char midVal = a[mid];
if (midVal < key)
low = mid + 1;
else if (midVal > key)
high = mid - 1;
else
return mid; // key found
}
return -(low + 1); // key not found.
}
当然,将数组a
替换为您的数组,即whitelist
。
基本上,请留意这一点 - http://en.wikipedia.org/wiki/Binary_search_algorithm#Iterative