数据结构

从一维数组a[n]中顺序查找出一个最大值元素的时间复杂度为(),输出一个二维数组b[m][n]中所有元素值的时间复杂度为()。

题目

从一维数组a[n]中顺序查找出一个最大值元素的时间复杂度为(),输出一个二维数组b[m][n]中所有元素值的时间复杂度为()。

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

已知一个大小为n的整型数组,现求该数组的全部连续子数组的元素之和的最大值,最优算法的时间复杂度是()如:a[4]={2,-1,3,-4},它的全部连续子数组为{2,-1,3,-4,[2,-1],[-1,3],[3,-4],[2,-1,3],[-1,3,-4],[2,-1,3,-4]},它们的元素之和为{2,-1,3,-4,1,2,-1,4,-2,0},其中的最大值为4。

A.O(logN)

B.O(N)

C.O(N*logN)

D.O(N^2)


正确答案:B

第2题:

设二维数组a[1..m, 1..n] 含有m*n 个整数。 ① 写一个算法判断a中所有元素是否互不相同?输出相关信息(yes/no); ② 试分析算法的时间复杂度。


参考答案:①判断二维数组中元素是否互不相同,只有逐个比较,找到一对相等的元素,就可结论为不是互不相同。如何达到每个元素同其它元素比较一次且只一次?在当前行,每个元素要同本行后面的元素比较一次(下面第一个循环控制变量p的for循环),然后同第i+1行及以后各行元素比较一次,这就是循环控制变量k和p的二层for循环。
  [算法描述]
  int JudgEqual(ing a[m][n],int m,n)
  //判断二维数组中所有元素是否互不相同,如是,返回1;否则,返回0。
  {for(i=0;i  for(j=0;j  {for(p=j+1;p  if(a[i][j]==a[i][p]) {cout<<“no”; return(0); }
  //只要有一个相同的,就结论不是互不相同
  for(k=i+1;k  for(p=0;p  if(a[i][j]==a[k][p]) { cout<<“no”; return(0); }
  }// for(j=0;j  cout<<“yes”; return(1); //元素互不相同
  }//算法JudgEqual结束
  ②二维数组中的每一个元素同其它元素都比较一次,数组中共m*n个元素,第1个元素同其它m*n-1个元素比较,第2个元素同其它m*n-2 个元素比较,……,第m*n-1个元素同最后一个元素(m*n)比较一次,所以在元素互不相等时总的比较次数为 (m*n-1)+(m*n-2)+…+2+1=(m*n)(m*n-1)/2。在有相同元素时,可能第一次比较就相同,也可能最后一次比较时相同,设在(m*n-1)个位置上均可能相同,这时的平均比较次数约为(m*n)(m*n-1)/4,总的时间复杂度是O(n4)。

第3题:

在一个n×m的二维线性表中顺序查找一个数据元素的算法时间复杂度是( )

A.O(n+m)

B.O(n×m)

C.O(n2)

D.O(m2)


正确答案:B
在-维线性表中顺序查找一个数据元素的算法时间复杂度是O(n),其中n是线性表的长度二维线性表的顺序查找方法和-维线性表相似,只不过是多了-维罢了。在二维表中进行顺序查找有两个方法:-是把二维线性表看成是n个长度为m的-维线性表,顺序查找就是对这n个-维线性表依次实施顺序查找,因此它的算法时间复杂度是O(n)×o(m)=o(n×m);二是直接把n×m的二维线性表看成一个n×m的-维线性表,那么在它当中用顺序查找法查捧一个元素的算法时间复杂度是O(n×m)。

第4题:

编程,找出长度为10\的数组中,数组元素的最大值和最小值,并输出。


答案:public class a{public static void main(String[] args){double x[]={25.3,56.3,15.3,125.25,465.36,456.32,458.21,456.325,4856.3215,41.6};double max=x[0];int i;for(i=0;i<10;i++){ if (max<=x[i])max=x[i];}double min=x[0];int j;for(j=0;i<10;i++){ if (min>=x[j])min=x[j];}System.out.println("最大数是"+max);System.out.println("最小数是"+min);}}

第5题:

从一棵二叉搜索树中查找一个元素时,其时间复杂度大致为(18)。

A.O(1)

B.O(n)

C.

D.O(n2)


正确答案:C
解析:从一棵二叉搜索树中查找一个元素时,大约需要树的寓度次比较,即时间复杂度大致为。

第6题:

在一个元素个数为N的数组里,找到升序排在N/5位置的元素的最优算法时间复杂度是()

A.O(n)

B.O(nlogn)

C.O(n(logn)2)

D.O(n3/2)


正确答案:A

第7题:

对于长度为n的顺序表,插入或删除表中元素的时间复杂度为【 】 ;对于顺序栈或队列,插入或删除表中元素的时间复杂度为【 】。


正确答案:O(n) O(1)
O(n) ,O(1) 解析:对于线性表的插入和删除,需要移动表中的元素,对于栈的插入和删除,只能在栈头进行操作;对于队列的插入或删除,只能在队尾或队头进行操作。

第8题:

在n(n>0)个元素的顺序栈中删除,1个元素的时间复杂度为______。

A.

B.

C.

D.


正确答案:D

第9题:

编程,找出长度为10的数组中,数组元素的最大值,并输出。


答案:public class a{public static void main(String[] args){double x[]={25.3,56.3,15.3,125.25,465.36,456.32,458.21,456.325,4856.3215,41.6};double m= x[0];int i;for(i=0;i<10;i++){ if (m<=x[i])m=x[i];}System.out.println("最大数是"+m); }}

第10题:

在二维数组M[0...n,0...m]中,访问某个元素的平均时间复杂度为______。

A.O(1)

B.O(nm)

C.O(m+n)

D.O(nn)


正确答案:A
解析:二维数组可以实现随机访问,因此访问时间复杂度为O(1)。

更多相关问题