11、在数组A[0..n-1]中查找给定值K的算法大致如下: i=n-1; while(i>=0 && (A[i]!=k)) i--; return i; 该算法的时间复杂度为()。
相似题目
-
在有n个无序无重复元素值的数组中查找第i小的数的算法描述如下:任意取一个元素r,用划分操作确定其在数组中的位置,假设元素r为第k小的数。若i等于k,则返回该元素值;若i小于k,则在划分的前半部分递归进行划分操作找第i小的数;否则在划分的后半部分递归进行划分操作找第k-i小的数。该算法是一种基于()策略的算法。
-
在DES算法中,如果给定初始密钥K,经子密钥产生的各个子密钥都相同,则称该密钥K为弱密钥,DES算法弱密钥的个数为()。
-
以下函数在a[0]到a[n-1]中,用折半查找算法查找关键字等于k的记录,查找成功返回该记录的下标,失败时返回-1,完成程序中的空格。https://assets.asklib.com/images/image2/2018072516232816916.jpg
-
以下函数在a[0]到a[n-1]中,用折半查找算法查找关键字等于k的记录,查找成功返回该记录的下标,失败时返回-1,完成程序中的空格。https://assets.asklib.com/images/image2/2018072511504033073.jpg
-
若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为()
-
快速排序算法在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于等于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了()算法设计策略。
-
若下三角矩阵An*n,按行顺序压缩存储在数组a[0..(n+1)n/2]中,则非零元素aij的地址为()(设每个元素占d个字节)
-
若数组A[0…m-1][0…n-1]按列优先顺序存储,则aij地址为()。
-
若下三角矩阵 A n*n ,按行顺序压缩存储在数组 a[0..(n+1)n/2] 中,则非零元素 a ij 的地址为()(设每个元素占 d 个字节)
-
有n个元素存放在一维数组A[1...n]中,在进行顺序查找时,这n个数的不同排列,其平均查找长度不同。
-
若数组A[0..m-1][0..n-1]按列优先顺序存储,则aij地址为()
-
1、算法A:在列表中找到首次出现的给定值 算法B:在列表中找到所有出现过的给定值 关于算法A和B的时间复杂度,下列说法正确的是:
-
给定一组长度为n的无序序列,将其存储在一维数组a[O.n-1]中。现采用如下方法找出其中的最大元素和最小元素:比较a[O]和a[n-1],若a[0]较大,则将二者的值进行交换;再比较a[1]和a[n-2],若a[1]较大,则交换二者的值;然后依次比较a[2]和a[n-3]、 a[3]和a[n-4]、…,使得每一对元素中的较小者被交换到低下标端。重复上述方法,在数组的前n/2个元素中查找最小元素,在
-
下列算法实现在顺序散列表中查找值为x的关键字,则在括号处应该填上的语句是struct record { int key; int flag; } int hashsqsearch(struct record hashtable[],int k) { int i,j; j=i=k%p; while(hashtable[j].key!=k && hashtable[j].flag!=0) { j=(j+1)%m; if(i==j) return -1; } if(这里要填啥? ) return j; else return -1; }
-
设字符串t和p的长度分别为m和n.t的后缀数组和最长公共前缀数组分别为sa和lcp.请说明如何利用t的后缀数组和最长公共前缀数组搜索给定字符串p在t中出现的所有位置.要求算法在最坏情况下的时间复杂性为O(m+logn).
-
16、有n个元素存放在一维数组A[1..n]中,在进行顺序查找时,这n个数的不同排列,其平均查找长度不同。
-
2、已知循环队列存储在一维数组A[0..n-1]中,且队列非空时front和rear分别指向队头元素和队尾元素。若初始时队列为空,且要求第1个进入队列的元素存储在A[0]处,则初始时front和rear的值分别是
-
2、以下算法是某个重要算法的一个版本,阅读后请求出该算法的时间效率,同时分析该算法有哪些重要缺陷,该如何弥补。 算法 GE(A[0..n-1,0..n-1]) for iß0 to n-2 do for jßi+1 to n-1 do for kßn downto i do A[j,k]ßA[j,k]-A[I,k]*A[j,i]/A[I,i]
-
在 n 个数的数组中确定其第 i(1 ≤ i ≤ n) 小的数时,可以采用快速排序算法中的划分思想 , 对 n 个元素划分,先确定第 k 小的数,根据 i 和 k 的大小关系 , 进一步处理,最终得到第 i 小的数。划分过程中,最佳的基准元素选择的方法是选择待划分数组的(此空作答 )元素。此时,算法在最坏情况下的时间复杂度为(不考虑所有元素均相等的情况)()
-
快速排序算法在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排数组划分成两个部分,前一部分元素值小于等于基准元素,而后一部分元素值大于等于基准元素。然后再分别对前后两部分进一步进行划分。根据上述描述,快速排序采用了()算法设计策略
-
6、折半搜索算法也称二分查找算法,是一种在有序数据集中查找某一特定元素的搜索算法。折半搜索要求数据集中的结点按关键字值升序或降序排列。折半搜索算法的基本原理是:首先将待查值与有序数据集的中间项进行比较,以确定待查值位于有序数据集的哪一半,然后将待查值与新的有序数据集的中间项进行比较。循环进行,直到相等为止。采用折半搜索算法在一个有10000件商品(有序排列)的超市中查找一件特定的商品,最多只需要查找的次数是 ()
-
快速排序算法在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于等于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了()算法设计策略。已知确定基准元素操作的时间复杂度为Θ(n),则快速排序算法的最好和最坏情况下的时间复杂度为()
-
如果在合并排序算法的分割步骤中,将数组a[0:n-1]划分为[ ]个子数组,每个子数组中有O()个元素
-
下面程序的功能是在一个字符数组中查找一个指定的字符,若数组中含有该字符则输出该字符在数组中第一次出现的位置(下标值);否则输出-1。请填空。 include <stdio.h> include <string.h> int main() {char c='a',t[50]; int n,k,j; gets(t); n=strlen(t); for(k=0; k<n;k++) if() {j=k; break;} else j=-1; printf("%d",j); return 0; }