学术论文中有人问过我这个问题。 请告诉我答案?
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
行。
该算法的最坏情况运行时间是多少
一个。如果对每行中的元素进行排序?
b.如果每行中的元素未排序?
根据给定的信息,排序/不排序对最坏的情况没有影响。在这两种情况下,最坏的情况都是,最新行中的最新元素是要查找的元素。在这种情况下,运行时将为 O(n^2),其中 n
具有您在 n x n
中指出的含义。这很n x n
,因为您必须遍历n
行,然后在每一行中进行n
比较。
如果您使用二分搜索,则排序示例的最坏情况运行时为 O(n log n),最坏的情况是搜索的元素位于最后一行的中间。