对n个元素值分别为-1、0或1的整型数组A进行升序排序的算法描述如下:统计A中-1、0和1的个数,设分别为n1、n2和n3,然后将A中的前n1个元素赋值为-1,第n1+1到n1+n2个元素赋值为0,最后n3个元素赋值为1。该算法的时间复杂度和空间复杂度分别为()。A、Θ(n)和Θ(1)B、Θ(n)和Θ(n)C、Θ(n2)和Θ(1)D、Θ(n2)和Θ(n)

题目

对n个元素值分别为-1、0或1的整型数组A进行升序排序的算法描述如下:统计A中-1、0和1的个数,设分别为n1、n2和n3,然后将A中的前n1个元素赋值为-1,第n1+1到n1+n2个元素赋值为0,最后n3个元素赋值为1。该算法的时间复杂度和空间复杂度分别为()。

  • A、Θ(n)和Θ(1)
  • B、Θ(n)和Θ(n)
  • C、Θ(n2)和Θ(1)
  • D、Θ(n2)和Θ(n)

相似考题
更多“对n个元素值分别为-1、0或1的整型数组A进行升序排序的算法描述如下:统计A中-1、0和1的个数,设分别为n1、n2和n3,然后将A中的前n1个元素赋值为-1,第n1+1到n1+n2个元素赋值为0,最后n3个元素赋值为1。该算法的时间复杂度和空间复杂度分别为()。A、Θ(n)和Θ(1)B、Θ(n)和Θ(n)C、Θ(n2)和Θ(1)D、Θ(n2)和Θ(n)”相关问题
  • 第1题:

    当发生窗体的单击事件时,输出的第二行为( )。 Private Sub Form_click() Dim N1 As Integer,N2 As Integer,N3 As Integer N1=1:N2=1 Print N1;N2 Do N3=N1+N2 Print N3; N1=N2:N2=N3 Loop Until N3>=5 End Sub

    A.1 1 1

    B.2 3 5

    C.2 5 7

    D.2 3 4


    正确答案:B
    解析:此处需注意的是,DO…LoopUntil循环的结束条件是Until后面的表达式值是True。当发生窗体的单击事件时,首先给变量N1和N2赋值为1,然后输出为12并换行。执行循环,N3的值为2,输出2不换行,进行赋值后N1的值为1,N2的值为2,判断条件“2>=5”为False,重新执行循环:第二次执行循环输出N3的值为3,循环结束条件依旧为False;第三次执行循环输出N3的值为5,循环结束条件为True,循环退出。所以输出的第二行为“235”。

  • 第2题:

    若长度为n的线性表采用顺序存储结构,在第i≤1≤i≤n+1) 个位置插入一个新元素的算法时间复杂度为(1)。

    A.O(0)

    B.O (1)

    C.O(n)

    D.O(n2)


    正确答案:C
    解析:性表上插入元素,时间主要耗费在移动元素上。不失一般性,假定性表上的任何位置插入元素是等概率的,即:Pi=1/(n+1),那么在插入一个元素时所需要移动元素的次数的平均值为:。因此,在长度为n的线性表中插入一个元素的时间复杂度为。

  • 第3题:

    阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。 【说明】 采用归并排序对n个元素进行递增排序时,首先将n个元素的数组分成各含n/2个元素的两个子数组,然后用归并排序对两个子数组进行递归排序,最后合并两个已经排好序的子数组得到排序结果。 下面的C代码是对上述归并算法的实现,其中的常量和变量说明如下: arr:待排序数组 p,q,r:一个子数组的位置从p到q,另一个子数组的位置从q+1到r begin,end:待排序数组的起止位置 left,right:临时存放待合并的两个子数组 n1,n2:两个子数组的长度 i,j,k:循环变量 mid:临时变量 【C代码】

    inciude<stdio.h> inciude<stdlib.h> define MAX 65536 void merge(int arr[],int p,int q,int r) { int *left, *right; int n1,n2,i,j,k; n1=q-p+1; n2=r-q; if((left=(int*)malloc((n1+1)*sizeof(int)))=NULL) { perror("malloc error"); exit(1); } if((right=(int*)malloc((n2+1)*sizeof(int)))=NULL) { perror("malloc error"); exit(1); } for(i=0;i<n1;i++){ left[i]=arr[p+i]; } left[i]=MAX; for(i=0; i<n2; i++){ right[i]=arr[q+i+1] } right[i]=MAX; i=0; j=0; for(k=p; (1) ; k++) { if(left[i]> right[j]) { (2) ; j++; }else { arr[k]=left[i]; i++; } } } void mergeSort(int arr[],int begin,int end){ int mid; if( (3) ){ mid=(begin+end)/2; mergeSort(arr,begin,mid); (4) ; merge(arr,begin,mid,end); } }

    【问题1】 根据以上说明和C代码,填充1-4。 【问题2】 根据题干说明和以上C代码,算法采用了(5)算法设计策略。 分析时间复杂度时,列出其递归式位(6),解出渐进时间复杂度为(7)(用O符号表示)。空间复杂度为(8)(用O符号表示)。 【问题3】 两个长度分别为n1和n2的已经排好序的子数组进行归并,根据上述C代码,则元素之间比较次数为(9)。


    正确答案:

    【问题1】(8分)
    (1)k<=r
    (2)arr[k]=right[j]
    (3)begin<end
    (4)mergeSort(arr,mid+1,end)

    【问题2】(5分)
    (5)分治
    (6)T(n)=2T(n/2)+O(n)
    (7)O(nlogn)
    (8)O(n)

    【问题3】(2分)
    (9)n1+n2


  • 第4题:

    快速排序算法在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了(61)算法设计策略。已知确定着基准元素操作的时间复杂度为O(n),则快速排序算法的最好和最坏情况下的时间复杂度为(62)。

    A.O(n)和O(nlgn)
    B.O(n)和O(n2)
    C.O(nlgn)和O(nlgn)
    D.O(nlgn)和O(n2)

    答案:D
    解析:
    将数据分成若干份,每份单独处理后再合并,其思想为分治。理想情况下,快速排序每次将数据划分为规模相近的两部分,并递归至不可再划分,因此其时间复杂度为O(nlgn)。在最坏情况下,每次划分都极不均匀,如一个类别中仅有一个元素,另一个类别中包含剩余所有元素。这时划分的复杂度为O(n),”次操作的总复杂度为O(n2)。

  • 第5题:

    设普通对称式圆锥齿轮差速器壳的转速为n0,左右两半轴的转速分别为n1、n2,则汽车转弯时有()

    • A、n1=n2=n0
    • B、n1=n2=2n0
    • C、n1=n2=0.5n0
    • D、n1+n2=2n0

    正确答案:D

  • 第6题:

    在下列选项中,不正确的赋值语句是()。

    • A、++t
    • B、n1=(n2=(n3=0))
    • C、k=i=j
    • D、a=b+c=1

    正确答案:D

  • 第7题:

    在对n个元素进行起泡排序的过程中,最好情况下的时间复杂度为:()

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

    正确答案:C

  • 第8题:

    设对称式锥齿轮差速器壳的转速为n0,左、右两侧半轴齿轮的转速分别为n1和n2,则有()

    • A、n1+n2=n0
    • B、n1+n2=2n
    • C、n1+n2=1/2n0
    • D、n1=n2=n0

    正确答案:B

  • 第9题:

    设有定义:intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是()

    • A、*p=*q;
    • B、p=q;
    • C、*p=&n1
    • D、p=*q;

    正确答案:A

  • 第10题:

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

    O(n)

    B

    O(nlog2n)

    C

    O(1)

    D

    O(n2)


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

  • 第11题:

    单选题
    在对n个元素进行起泡排序的过程中,最好情况下的时间复杂度为:()
    A

    .O(n3

    B

    O(n2

    C

    O(n)

    D

    O(1)


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

  • 第12题:

    单选题
    设对称式锥齿轮差速器壳的转速为n0,左、右两侧半轴齿轮的转速分别为n1和n2,则有()。
    A

    n1+n2=n0

    B

    n1+n2=2n0

    C

    n1=n2=n0


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

  • 第13题:

    函数swap(arr,n)可完成对arr数组从第1个元素到第n个元素两两交换。在运行调用函数中的语句后,a[0]和a[1]的值分别为【 】。

    a[0]=1;a[1]=2;swap(a,2);


    正确答案:21
    2,1 解析:本题考核函数参数的传递。数组名作为函数参数传递的是数组的首地址,即实参数组名把实参数组的首地址传给了形参数组名,形参数组名就指向了相应的实参数组,就是说形参数组和实参数其实就是同一个数组,对形参数组元素的修改也同样影响到对应的实参数组元素。

  • 第14题:

    对n个基本有序的整数进行排序,若采用插入排序算法,则时间和空间复杂度分别为(62);若采用快速排序算法,则时间和空间复杂度分别为(63)。

    A.O(n2)和O(n)

    B.O(n)和O(n)

    C.O(n2)和O(1)

    D.O(n)和O(1)


    正确答案:C
    本题考查基本排序算法的时间复杂度与空间复杂度。

  • 第15题:

    样本含量分别为n1和n2的两个小样本均数比较的t检验中,自由度等于

    A.n1 + n2 -2
    B.n1 - n2
    C.n1 + n2 -1
    D.n1 + n2
    E.(n1 + n2)/2

    答案:A
    解析:

  • 第16题:

    在双标准纬线等角圆锥投影中,n1、n2分别为标准纬线φ1和φ2处的纬线长度比,选项正确的是()。

    A:n1>1,n2<1
    B:n1<1,n2>1
    C:n1<0,n2>0
    D:n1=1,n2=1

    答案:D
    解析:
    在圆锥投影中,双标准纬线的长度比均为1;在双标准纬线之间长度比小于1;在双标准纬线以外的长度比大于1。选项A、B、C不适合。故选D。

  • 第17题:

    设对称式锥齿轮差速器壳的转速为n0,左、右两侧半轴齿轮的转速分别为n1和n2,则有()。

    • A、n1+n2=n0
    • B、n1+n2=2n0
    • C、n1+n2=1/2n0
    • D、n1=n2=n0

    正确答案:B

  • 第18题:

    在下列选项中,不正确的赋值语句是()

    • A、t/=5;
    • B、n1=(n2=(n3=0));
    • C、k=i= = j;
    • D、a=b+c=1;

    正确答案:D

  • 第19题:

    在对n个元素进行直接插入排序的过程中,算法的空间复杂度为()

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

    正确答案:A

  • 第20题:

    设对称式锥齿轮差速器壳的转速为n0,左、右两侧半轴齿轮的转速分别为n1和n2,则有()。

    • A、n1+n2=n0
    • B、n1+n2=2n0
    • C、n1=n2=n0

    正确答案:B

  • 第21题:

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

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

    正确答案:C

  • 第22题:

    单选题
    设对称式锥齿轮差速器壳的转速为n0,左、右两侧半轴齿轮的转速分别为n1和n2,则有()。
    A

    n1+n2=n0

    B

    n1+n2=2n0

    C

    n1+n2=1/2n0

    D

    n1=n2=n0


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

  • 第23题:

    单选题
    设对称式锥齿轮差速器壳的转速为n0,左、右两侧半轴齿轮的转速分别为n1和n2,则有()
    A

    n1+n2=n0

    B

    n1+n2=2n

    C

    n1+n2=1/2n0

    D

    n1=n2=n0


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