java - 如何通过二分查找获取数组中的最后一个字符

标签 java arrays recursion

我的老师编写了一个算法来查找数组中的数字。我尝试将其转换为char

如果我搜索数组的第一个 char ,它会起作用,但如果我尝试在同一数组中查找最后一个 char ,它会给我 0 或意外的数字(例如 100+,当数组类似于 4 个 char 时)。

代码如下:

int myIndex = binarySearch(sentence , word[0], 0, sentence.length -1);

char [] sentence = {'s','t','a','c','k','o','v','e','r','f','l','o','w'};
char [] word = {'o','v','e','r'};

static int binarySearch(char [] arr, char x, int l, int r){
    if(r<l){
        return 0;
    }

    int m = l+(r-l)/2;
    if(arr[m] == x){
        return m;
    }
    if(arr[m] < x){
        return binarySearch(arr, x, m+1, r);
    }
    return binarySearch(arr, x, l, m-1);
}

如果我在 word 数组中搜索第一个字母,它工作正常,但如果我在 word 数组中搜索最后一个字母,它就会崩溃。

最佳答案

您正在对未排序的字符输入数组 arr 使用二分搜索。因此,您必须首先对数组进行排序或对未排序的数组使用线性搜索。

关于java - 如何通过二分查找获取数组中的最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56560313/

相关文章:

java - 无法通过 Google Nearby API 连接两个设备

java - 如何从后端获取java Web应用程序中的用户位置?

c - 递归二叉树插入

java - 如何以编程方式检查应用程序是否已部署在 JBoss5 中?

java - 将 kryo 对象存储在已编译的 jar 中?

c++ - 在 C++ 中复制数组的最快可移植方法是什么

java - 将包含数组的字符串转换为数组对象

php - 合并 2 个数组,如果 key 存在则添加一个新项目

c# - 递归调用返回一个列表,返回类型导致我出现问题

algorithm - 递归伸展树(Splay Tree)