参考答案和解析
正确答案:O(n);O(m*n)
更多“从一维数组a[n]中顺序查找出一个最大值元素的时间复杂度为(),”相关问题
  • 第1题:

    设二维数组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)。

  • 第2题:

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

    A.O(1)

    B.O(n)

    C.

    D.O(n2)


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

  • 第3题:

    编程,找出长度为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);}}

  • 第4题:

    设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为()。


    答案:C
    解析:
    数组是随机存取的结构,所以读取第i个节点的时间复杂度为0(1)。

  • 第5题:

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


    正确答案:O(n);O(m*n)

  • 第6题:

    对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为(),在表尾插入元素的时间复杂度为()


    正确答案:O(n);O(1)

  • 第7题:

    给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素,请设计一个最坏时间复杂度为O(n)的算法,并对其时间复杂度进行分析说明。


    正确答案: 我们把这种算法叫做快速选择(quickselect)。令〡Si〡为Si中元素的个数,快速选择的步骤如下:
    1)如果〡S〡=1,那么k=1并将S中的元素作为答案返回。如果正在使用小数组的截止方法且〡S〡≤CUTOFF,则将S排序并返回第k个最小元。
    2)选取一个枢纽元v∈S。
    3)将集合S-{v}分割成S1和S2,就像快速排序中所做的那样。
    4)如果k≤〡S1〡,那么第K个最小元必然在S1中。在这种情况下,返回quickselect(S1,k),如果k=1+〡S1
    ,那么枢纽元就是第k个最小元,将它最为答案返回。否则,第k个最小元就在S2中,他是S2中的第(k-〡S1〡-1)个最小元。我们进行一次递归调用并返回quickselect(S2,k-〡S1〡-1)。
    与快速排序对比,快速选择只进行了一次递归调用而不是两次。快速选择的最坏情形和快速排序的相同,也就是O(N=2)。直观看来,这是因为快速排序的最坏情形发生在S1和S2有一个是空的时候;于是,快速选择也就不是真的节省一次递归调用。不过平均运行时间是O(N)。具体分析类似快速排序的分析。
    快速排序的实现甚至比抽象描述还要简单,当算法终止时,第k个最小元就在位置k-1上(因为数组开始于下标0)。这破坏了原来的排序;如果不希望这样,那么需要做一份拷贝。

  • 第8题:

    一维数组定义语句intn=10,a[n];则()

    • A、数组长度为10
    • B、数组中最后一个元素的下标是n-1
    • C、数组中第一个元素是a[1]
    • D、语法错

    正确答案:D

  • 第9题:

    单选题
    插入排序是一种简单实用的工具,在对数组排序时,我们可能用二分查找,对要插入的元素快速找到在已经排好元素序列中的位置。下面的描述中正确的是()。
    A

    二分查找的时间复杂度为O(lgN),因此排序的时间复杂度为O(N*lgN)

    B

    二分查找的时间复杂度为O(N),因此排序的时间复杂度为O(N*lgN)

    C

    二分查找的时间复杂度为O(lgN),因此排序的时间复杂度为O(N*N)

    D

    二分查找的时间复杂度为O(N),因此排序的时间复杂度为O(N*N)


    正确答案: B
    解析: 暂无解析

  • 第10题:

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

    正确答案: O(n),O(m*n)
    解析: 暂无解析

  • 第11题:

    填空题
    以顺序查找方法从长度为n的顺序表或单链表中查找一个元素时,平均查找长度为(),时间复杂度为()

    正确答案: (n+1)/2,O(n)
    解析: 暂无解析

  • 第12题:

    填空题
    以顺序查找方法从长度为n的线性表中查找一个元素时,平均查找长度为(),时间复杂度为()。

    正确答案: (n+1)/2,O(n)
    解析: 暂无解析

  • 第13题:

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


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

  • 第14题:

    编程,找出长度为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); }}

  • 第15题:

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

    A.O(1)

    B.O(nm)

    C.O(m+n)

    D.O(nn)


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

  • 第16题:

    在顺序表中删除一个元素的时间复杂度为()。


    答案:C
    解析:
    删除顺序表中第i个元素,将顺序表第i个元素以后元素均向前移动一个位置,因此时间复杂度为0(n)。

  • 第17题:

    以顺序查找方法从长度为n的顺序表或单链表中查找一个元素时,平均查找长度为(),时间复杂度为()


    正确答案:(n+1)/2;O(n)

  • 第18题:

    以顺序查找方法从长度为n的线性表中查找一个元素时,平均查找长度为(),时间复杂度为()。


    正确答案:(n+1)/2;O(n)

  • 第19题:

    在一个用一维数组a[n]表示的顺序栈中,该栈所含元素的个数最少为()个,最多为()个


    正确答案:0;n-1

  • 第20题:

    设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为()。

    • A、O(n)
    • B、O(nlog2n)
    • C、O(1)
    • D、O(n2)

    正确答案:C

  • 第21题:

    问答题
    我们通常采用大O形式来表示算法的时间复杂度。例如,在一个长度为n的顺序表中顺序查找一个数据元素的过程的时间复杂度为O(n),其中,n表示问题的规模。那么,O(1)表示什么?请举出一个例子加以说明。

    正确答案: O(1)表示时间复杂度与问题规模无关。例如,在堆栈或者队列中插入一个新的元素的过程的时间复杂度为O(1)。
    解析: 暂无解析

  • 第22题:

    填空题
    在一个用一维数组a[n]表示的顺序栈中,该栈所含元素的个数最少为()个,最多为()个

    正确答案: 0,n-1
    解析: 暂无解析

  • 第23题:

    填空题
    对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为(),在表尾插入元素的时间复杂度为()

    正确答案: O(n),O(1)
    解析: 暂无解析

  • 第24题:

    问答题
    给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素,请设计一个最坏时间复杂度为O(n)的算法,并对其时间复杂度进行分析说明。

    正确答案: 我们把这种算法叫做快速选择(quickselect)。令〡Si〡为Si中元素的个数,快速选择的步骤如下:
    1)如果〡S〡=1,那么k=1并将S中的元素作为答案返回。如果正在使用小数组的截止方法且〡S〡≤CUTOFF,则将S排序并返回第k个最小元。
    2)选取一个枢纽元v∈S。
    3)将集合S-{v}分割成S1和S2,就像快速排序中所做的那样。
    4)如果k≤〡S1〡,那么第K个最小元必然在S1中。在这种情况下,返回quickselect(S1,k),如果k=1+〡S1
    ,那么枢纽元就是第k个最小元,将它最为答案返回。否则,第k个最小元就在S2中,他是S2中的第(k-〡S1〡-1)个最小元。我们进行一次递归调用并返回quickselect(S2,k-〡S1〡-1)。
    与快速排序对比,快速选择只进行了一次递归调用而不是两次。快速选择的最坏情形和快速排序的相同,也就是O(N=2)。直观看来,这是因为快速排序的最坏情形发生在S1和S2有一个是空的时候;于是,快速选择也就不是真的节省一次递归调用。不过平均运行时间是O(N)。具体分析类似快速排序的分析。
    快速排序的实现甚至比抽象描述还要简单,当算法终止时,第k个最小元就在位置k-1上(因为数组开始于下标0)。这破坏了原来的排序;如果不希望这样,那么需要做一份拷贝。
    解析: 暂无解析