微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

逆序数组线性搜索算法

如何解决逆序数组线性搜索算法

我需要以相反的方式找出数组上的一个元素,即检查从最后一个元素到第一个元素的元素

这是我的代码

public static int linearSearch(int[] array,int key) {
    int size = array.length - 1;
    for (int i = size; i > 0; i--) {
        if (array[i] == key) {
            return i;
        }
    }
    return -1;
}
   

这是我的测试用例-

count = 10
array  = 44 55 66 77 88 22 11 66 99 33
key = 66

它的输出是7,这是错误的 它的实际输出显然是2。 我不知道我的逻辑哪里出了问题。

我也不知道如何实现(如果重复键,则以相反的顺序打印首次出现键的索引。)

解决方法

如果您尝试从头开始返回迭代次数,则可以创建一个int并返回迭代值

   public static int linearSearch(int[] array,int key) {
        int size = array.length - 1;
        int iteration =-1;
        for (int i = size; i >= 0; i--) {
            iteration++;
            if (array[i] == key) {
                return iteration;
            }
        }
        return -1;
    }


,

因此,在关于您实际想要的内容有一些不一致之处之后,我想我现在就知道了。该代码将为您工作:

public static void main(String[] args) {

    int[] array = { 44,55,66,77,88,22,11,99,33 };
    int key = 66;
    int result = linearSearch(array,key);
    System.out.println("Index from the right for value " + key + " is: " + result);
}

public static int linearSearch(int[] array,int key) {
    int size = array.length - 1;
    for (int i = size; i >= 0; i--) {
        if (array[i] == key) {
            return size - i;
        }
    }
    return -1;
}

输出为:

Index from the right for value 66 is: 2

说明:

for循环从size0向后循环。如果找到匹配项,它将从右边返回索引,所以size - i

,

如果您还想返回“反向”索引,则必须在return语句中将其考虑在内:

public static int linearSearch(int[] array,int key)
{
    int size = array.length - 1;
    for (int i = size; i > 0; i--)
        if (array[i] == key)
            return size - i;
    return -1;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。