如何解决逆序数组线性搜索算法
我需要以相反的方式找出数组上的一个元素,即检查从最后一个元素到第一个元素的元素
这是我的代码
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循环从size
到0
向后循环。如果找到匹配项,它将从右边返回索引,所以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 举报,一经查实,本站将立刻删除。