【发布时间】:2016-05-11 18:53:09
【问题描述】:
我正在阅读有关数组的内容,并编写了下面的第一个代码。老师确实编写了第二个代码,用于在数组中搜索特定数字。 java中以下两个代码之间的ordo表示法有什么区别。 哪些代码性能更好,它的大 O 表示法是什么。
我的代码
public static void main(String[] args)
{
int[] data = { 100, 110, 120, 130, 140, 150 };
int index = binarySearch(data, 120);
System.out.println(index);
}
private static int binarySearch(int[] data, int i)
{
if (data.length == 0)
{
return -1;
}
for (int k = 0; k < data.length; k++)
{
if (data[k] == i)
{
return k;
}
}
return -1;
}
教师代码
public static void main(String[] args)
{
int[] data = { 100, 110, 120, 130, 140, 150 };
int index = binarySearch(data, 120);
System.out.println(index);
}
static int binarySearch(int[] keys, int v)
{
int position;
int begin = 0, end = keys.length - 1;
while (begin <= end)
{
position = (begin + end) / 2;
if (keys[position] == v)
{
return position;
}
else if (keys[position] < v)
{
begin = position + 1;
}
else
{
end = position - 1;
}
}
return -1;
}
【问题讨论】:
-
听起来你把作业丢给我们了。甚至尝试过自己寻找答案?此外:您的代码不使用二进制搜索。不要给方法命名与方法实际执行的名称不匹配。
-
这不是作业,老师代码取自这里users.soe.ucsc.edu/~sbrandt/13H/slides/Chapter5.pdf我在帖子中说我正在阅读,我正在学习自己..你现在清楚了吗?
-
在 naoming 约定中,Järgermeister 是对的 - 您的代码不是二进制搜索 :)
-
@Supahupe 谢谢你,我明白了
-
@GfsdGfds 确切地说:您刚刚发布了一些代码。您没有提供任何证据表明您试图自己解决此问题。
标签: java