我的学术论文中有人问过这个问题。请让我知道答案?
arrayFind(x, A)
i =0 ;
while( i < n ) {
if(x==A[i])
return i;
else
i = i+1;
}
return –1;
假设我们有一个算法find2D( )
,用于在二维中找到元素x
n x n
数组A
。算法find2D( )
迭代A
行并在每个行上调用算法arrayFind()
,直到找到x
或者搜索了A
的所有行。
此算法的最差运行时间是什么
一个。如果每行中的元素都已排序?
湾如果每行中的元素没有排序?
答案 0 :(得分:5)
根据给出的信息,排序/不排序对最坏情况没有影响。在这两种情况下,最糟糕的情况是,最新一行中的最新元素是要查找的元素。在这种情况下,运行时将为O(n ^ 2),其中n
具有您使用n x n
指出的含义。它是n x n
,因为您必须遍历n
行,然后在每行进行n
次比较。
如果您使用二进制搜索,则排序的示例将具有O(n log n)的最差情况运行时,最坏的情况是,搜索的元素位于最后一行的中间。