多个整数的线性搜索

Posted

技术标签:

【中文标题】多个整数的线性搜索【英文标题】:linear search for multiple integers 【发布时间】:2019-12-14 16:09:23 【问题描述】:

我试图实现一个整数数组的线性搜索,如果数字是 3 的倍数,它将打印数组中数字的索引,如果没有任何数字是 3 的倍数将返回-1 我试图在不使用方法的情况下实现它,我的问题是我将如何打印/返回-1? 知道我的代码是

int[] a = 3, 5, 22, 7, 9, 8, 21;
System.out.println("the index of 3 multiplies is" );
for (int i = 0; i < a.length; i++)  
    if (a[i] % 3 == 0) 
        System.out.print(i + " ");
        continue;
    

【问题讨论】:

使用foundIndex 变量,初始化为-1。只有当它仍然是 -1 时才继续循环。在循环之后打印变量的值。 你不需要 continue 语句。 为什么不让函数返回一个包含三的倍数的数字索引的数组,否则返回 null。然后您单独进行打印。 你能帮我把它显示在代码中吗 我已经理解了您尝试解释的部分想法,但我不确定它是否正确。我没有得到的想法是我将如何检查“如果它仍然是-1”?问题是,如果我将其打印出来,即使是 3 的倍数,也会以任何方式打印它 【参考方案1】:

如果算法发现乘以 3,您可以使用 boolean found = false 并将其设置为 true。在 for 循环之后,您可以询问结果。

【讨论】:

如果目的呢?我有一段时间没有使用它或其他什么..你能解释一下吗? 你在下面的解决方案中自己想出来了,这正是我的意思;)【参考方案2】:
int[] a = 3, 5, 22, 7, 9, 8, 21;
int multipleOfThree = 0;
System.out.println("the index of 3 multiplies is" );
for (int i = 0; i < a.length; i++)  
    if (a[i] % 3 == 0) 
        System.out.print(i + " ");
        multipleOfThree++;
    


if( multipleOfThree == 0 )
    System.out.println(-1);

我认为这就是您要寻找的。如果你想使用一个方法,而不是打印 multipleOfThree,你应该返回它。

【讨论】:

谢谢!!我用过类似的方法解决它!你的也有效!【参考方案3】:
int[] a = 1,5,22,7,52,8,20;
   System.out.println("the index of 3 multiplies is" );
    boolean found = false; 
   for(int i = 0; i<a.length;i++) 
   if(a[i]%3==0)
    found = true; 
    System.out.println(i+"  ");
   
  
   if(!found)
    System.out.println("-1");
   
  ``

【讨论】:

以上是关于多个整数的线性搜索的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中对整数数组进行线性搜索时,SSE 比较无法按预期工作

线性规划(LP)基本概念和搜索算法

二元和线性搜索

线性搜索 - Python

线性搜索数组

二分搜索与线性搜索奇怪的时间