【发布时间】:2020-07-27 21:24:15
【问题描述】:
您好,我是编程新手,我正在尝试解决一个问题,其中我得到了一个由 10 个随机数组成的数组,我不得不说 number 是否在数组中。
如果是 - 那么程序必须显示消息“我找到了!”,如果不是 - “那个数字不在数组中!”
我写了这个解决方案,我想知道是否有更简单快捷的方法来解决它(Java语言)
输入:一个数字和一个数字数组
int cont=0;
for(i=0; i<10;i++){
if(numbers[i]==number){
System.out.println("I found it");
cont++;
break;
}
}
if(cont==0)
System.out.println("That number is not in the array!");
感谢您的帮助,如果真的很简单,对不起,但我是初学者。
【问题讨论】:
-
它可以做得更好,例如,当您发现任何情况时直观地
breaking for 循环(因为没有必要寻找更多)。 -
你正在实现一个经典的搜索算法。如果未对随机数进行排序,则您的解决方案通常是最有效的(线性搜索),前提是您添加了
break,正如其他评论指出的那样。但是,如果对随机数进行了排序,则可以执行对数且效率更高的二进制搜索。下面是一个二分查找的例子:geeksforgeeks.org/binary-search. -
是的!我推荐的一些工具是streams。你可以用很少的代码做一些非常有趣的事情(比如这种搜索)。
-
我认为最后一个条件应该是
if (cont==0)。或者只是使用boolean而不是计数。 -
找到号码后应该返回。那么你就不需要最后的 if 语句了。