在数组A[0,1,……,n-1]中查找给定值K的算法大致如下: i=n-1; While(i>=0(A[i]!=k)) i--; return i; 该算法的时间复杂度为 () A O(n) B 无法确定 C O(n-i) D O(n-i+1)

在数组A[0,1,……,n-1]中查找给定值K的算法大致如下: i=n-1; While(i>=0&&(A[i]!=k)) i--; return i; 该算法的时间复杂度为 () A O(n) B 无法确定 C O(n-i) D O(n-i+1)


参考答案和解析
O(n)

相关考题:

●下面算法是实现对n个整数的序列进行选择排序,其中序列的"长度"n为问题的规模。该算法的时间复杂度为 (23) 。void select_sort(int a[],int n){//将a中整数序列重新排列成从小到大有序的整数序列for(i=0;in-1;++i){j=i;for(k=i+1;kn;++k)if(a[k]a[j])j=k;if(j!=i){w=a[j];a[j]=a[i];a[i]=w;}}//select- sort(23) A.O(n3)B.O(n2)C.O(n)D.O(n4)

判断一包含n个整数的数组a[]中是否存在i、j、k满足a[i]+a[j]+a[k]=0的时间复杂度需要()A.O(n^2)B.O(n^2logn)C.O(n^3)D.O(nlogn)

程序段s=i=0;do{i=i+1;s=s+i;}while(i=n);的时间复杂度为()。A、O(n)B、O(nlog2n)C、O(n)D、O(n/2)

下列程序段的时间复杂度为()。i=0,s=0;while(sn){s=s+i;i++;}A、O(n1/2)B、O(n1/3)C、O(n)D、O(n2)

在单链表中,查找第i个的元素时,其时间复杂度为()。 A、O(n)B、O(1)C、O(n2)D、O(n-1)

下列程序段的时间复杂度为()。A.O(i*j)B.O(i+j+k)C.O(n3)D.O(n2)

下面算法的时间复杂度为(34)。 int f(unsigned int n){ if(n=0||n==1)return 1; else return n*f(n-1); }A.O(1)B.O(n)C.O(n2)D.O(n!)

对于一个链串s,查找第i个元素的算法的时间复杂度为()。 A.O(1)B.О(n)C.O()D.以上都不对

设n为正整数。则下面程序段的时间复杂度为()。 i=1;k=0; while(i A.O(1)B.O(nC.O(nlogn)D.O(n2)

设n为正整数。则下面程序段的时间复杂度为()。 k=0; for(i=1;i A.O(1)B.O(n)C.O(nlogn)D.O(n2)

已知数组a中有n个元素,下列语句将数组a中从下标x1开始的k个元素移动到从下标x2开始的k个元素中,其中O<=xl<x2<n,x2+k<n,请将下列语句补充完整。For(int i=x1+k-1;i>=x1;i--)a[______]=a[i];

下面算法是实现对n个整数的序列进行选择排序,其中序列的“长度”n为问题的规模。该算法的时间复杂度为(11)。 void select_sort(int a[],int n){ //将a中整数序列重新排列成从小到大有序的整数序列 for(i=0;i<n-1;++i){ j=i; for(k=i+1;k<n;++k)if(a[k]<a[j])j=k; if(j!=i){w=a[j];a[j];a[i];a[i]=w} )//select_sortA.O(n2)B.O(n3)C.O(n4)D.O(n)

有以下程序:include using namespace std;int main ( ){ int n[3],i,j,k = 2; for(i 有以下程序: #include <iostream> using namespace std; int main ( ) { int n[3],i,j,k = 2; for(i = 0;i<k;i++) n[i] = O; for(i = O;i<k;i++) { for(j = O;j<k;j++) n[j] = n[i] + 1; } cout<<n [0 ] <<end1; return 0; } 上述程序运行后,输出结果是( )。A.0B.1C.2D.3

算法的主运算如下,其中i的初值为1,s的初值为0,“←”为赋值号。 while i<n do { for j←1 to n do s←s+a[i,j] i←i*2; 则该算法的时间复杂度为 ( )A.O(2n)B.O(n+log2n)C.O(nlog2n)D.O(n2)

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

下面程序段的时间复杂度是(9)。for(i=0,k=0;<n;1++){ k+=A[i][j]; for(j=1;j<m;j++) A[i][j]=1}A.O(n)B.O(m+n+1)C.O(m+n)D.O(m*n)

下列程序的时间复杂度为( )。 for (i=l;i<2n;i++) { y++; for(j=0;j<a3n;j++) x++; }A.0(n-1)B.O(2n)C.0(n2)D.O(log2n)

算法的主要运算如下: While i<n do { s=0; While s<n do { s=s+1; } i=i+1; } 其中i的初值为0,s初值为0,“=”为赋值号。该算法的时间复杂度为()A.O(2n)B.O(n+log2n)C.O(nlog2n)D.O(n2)

试题14以下程序调用fun函数把x中的值插入到a数组下标为k的数组元素中。主函数中,n存放a数组中数据的个数。请填空。#include stdio.hvoid fun(int s[], int *n, int k, int x){ int i;for(i=*n-1; i=k; i- - ) s[ ___ ]=s[i];s[k]=x;*n=*n+______;}main(){ int a[20]={1,2,3,4,5,6,7,8,9,10,11}, i, x=0, k=6, n=11;fun(a, n, k, x);for(i=0; in; i++) printf(“%4d”,a[i]); printf(“\n”);}

已知有一维数组A[0.m×n-1],若要对应为m行n列的矩阵,则下面的对应关系(),可将元素A[k](O≤<k≤<m×n)表示成矩阵的第i行、第j列的元素(0≤i≤m,0匀≤n)。 A. i=k/n,j=k%mB.i=k/m,j=k%mC.i=k/n,j=k%nD.i=k/m,j=k%n

下列程序段的时间复杂度为()。for(i=0;i<m;i++)for(j=0;j<t;j++)e[i][j]=0;for(i=0;i<m;i++)for(j=0;j<t;j++)for(k=0;k<n;k++)c[i][j]_c[i][j]+a[i][k]×b[k][j];A.O(m×n×t)B.O(m+n+t)C.O(m×t+n)D.O(m+n×t)

在有n个无序无重复元素值的数组中查找第i小的数的算法描述如下:任意取一个元素r,用划分操作确定其在数组中的位置,假设元素r为第k小的数。若i等于k,则返回该元素值;若i小于k,则在划分的前半部分递归进行划分操作找第i小的数;否则在划分的后半部分递归进行划分操作找第k-i小的数。该算法是一种基于()策略的算法。A、分治B、动态规划C、贪心D、回溯

下面程序段的时间复杂度为()。 i=1; while(i=n)i=i*3;A、O(n)B、O(3n)C、O(log3n)D、O(n3)

在n个结点的单链表中,查找第i个元素,和修改第i个元素的时间复杂度都是()。A、O(1)B、O(n)C、O(nn)D、都不对

设S为C语言的语句,计算机执行下面算法时,算法的时间复杂度为()。for(i=n-1;i=0;i--)for(j=0;jA、n2B、O(nlgn)C、O(n)D、O(n2)

在n个结点的线性表的数组实现中,算法的时间复杂度是O(1)的操作是()。A、访问第i(1<=i<=n)个结点和求第i个结点的直接前驱(1<i<=n)B、在第i(1<=i<=n)个结点后插入一个新结点C、删除第i(1<=i<=n)个结点D、以上都不对

顺序表各种算法,都有其时间复杂度,在n个结点的顺序表中,删除第i(1≤i≤n)个结点的时间复杂度是()。A、O(1)B、O(n)C、O(nlog2n)D、O(log2n2)

单选题设S为C语言的语句,计算机执行下面算法时,算法的时间复杂度为()。for(i=n-1;i=0;i--)for(j=0;jAn2BO(nlgn)CO(n)DO(n2)