java中字符数组的二进制搜索

时间:2011-09-20 05:58:44

标签: java

我想知道如何在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);
                }

1 个答案:

答案 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