网友您好, 请在下方输入框内输入要搜索的题目:
题目内容
(请给出正确答案)
在有n(n>1000)个元素的升序数组A中查找关键字x。查找算法的伪代码如下所示: k = 0; while (k<n 且 A[k]<x ) k = k+3; if (k<n 且 A[k]==x ) 查找成功; else if (k-1<n 且 A[k-1]==x ) 查找成功; else if (k-2<n 且 A[k-2]==x ) 查找成功; else 查找失败; 本算法与二分查找(折半查找)算法相比,有可能具有更少比较次数的情形是:
A.当x不在数组中
B.当x接近数组开头处
C.当x接近数组结尾处
D.当x位于数组中间位置
参考答案和解析
当x接近数组开头处
更多 “在有n(n>1000)个元素的升序数组A中查找关键字x。查找算法的伪代码如下所示: k = 0; while (k<n 且 A[k]<x ) k = k+3; if (k<n 且 A[k]==x ) 查找成功; else if (k-1<n 且 A[k-1]==x ) 查找成功; else if (k-2<n 且 A[k-2]==x ) 查找成功; else 查找失败; 本算法与二分查找(折半查找)算法相比,有可能具有更少比较次数的情形是:A.当x不在数组中B.当x接近数组开头处C.当x接近数组结尾处D.当x位于数组中间位置” 相关考题
考题
阅读下面程序,则程序的执行结果为【19】。#include "stdio.h"fun(int k,int *p){ int a,b;if(k==1||k==2)*p=1;else{ fun(k-1,a);fun(k-2,b);*p=a+b;}}main(){ int x;fun(6, x);printf( "%d\n",x);}
考题
N个有序整数数列已放在一维数组中,给定下列程序中,函数fun()的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,则返回其下标值:反之,则返回-1。折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下次查找范围落在中间位置之前的元素中。直到low>high,查找结束。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include <stdio.h>define N 10/*************found*********************/void fun(int a[],int m){ int low--0,high=N-l,mid;while (low<=high){ mid=(low+high)/2;if(m<a[mid])high=mid-1;/*************found*********************/else if(m>=a [mid])low=mid+1;else return(mid);}return(-1);}main (){ int i,a[N]={-3,4,7,9,13,24,67,89,100,180},k,m;printf ("a数组中的数据如下: ");for(i=0;i<N;i++) printf("%d",a[i]);printf ("Enter m: "); scanf ("%d", m);k=fun (a,m);if (k>=0) printf ("m=%d, index=%d\n",m, k);else printf("Not be found!\n");}
考题
在一个长度为n的顺序线性表中顺序查找值为x的元素时,查找成功时的平均查找长度(即x与元素的平均比较次数,假定查找每个元素的概率都相等)为().
AnBn/2C(n+1)/2D(n-1)/2
考题
有一排好序的线性表,长度大于2,对给定的K值,分别用顺序查找和二分查找一个与K值相等的元素,比较的次数分别是X和Y。在查找不成功的情况下,正确的X和Y的关系是A.X,YB.X<YC.X=YD.与K大小有关
考题
若对大小为N的有序顺序表进行顺序查找,当查找不成功时,平均查找长度为(59);当查找成功且表中仅有一个关键字等于欲查找的元素时,平均查找长度为(60)。A.NB.N+1C.N/2D.(N+1)/2
考题
下面程序的运行结果是#include "stdio.h" void fun(int k,int *p) { int a,b; if(k==1|| k==2) *p=1; else { fun(k-1,a); fun(k-2,b); *p=a+b; } }main(){ int x; fun(6,x); printf("%d\n",x);}
考题
有一排好序的线性表,长度大于2,对给定的k值,分别用顺序查找和二分查找查找一个与k值相等的元素,比较的次数分别为x和y。在查找不成功的情况下,正确的x和y的关系是 ______。A.x>yB.总是x<yC.x=yD.与k值的大小有关
考题
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明]已知r[1...n]是n个记录的递增有序表,用折半查找法查找关键字为k的记录。若查找失败,则输出“failure",函数返回值为0;否则输出“success”,函数返回值为该记录的序号值。[C函数]int binary search(struct recordtype r[],int n,keytype k){ intmid,low=1,hig=n;while(low<=hig){mid=(1);if(k<r[mid].key) (2);else if(k==r[mid].key){printf("succesS\n");(3);}else (4);}printf("failure\n");(5);}
考题
有一个排好序的线性表,长度大于2,对给定的k值,分别用顺序查找和二分查找查找一个与k值相等的元素,比较的次数分别为x和y。在查找不成功的情况下,正确的x和y的关系是______。A.x>yB.总是x<yC.x=yD.与k值大小有关
考题
在索引查找中,若用于保存数据元素的主表的长度为n,它被均分为k个子表,每个子表的长度均为n/k,则索引查找的平均查找长度为()。A、 n+kB、 k+n/kC、 (k+n/k)/2D、 (k+n/k)/2+1
考题
在一个长度为n的线性表中顺序查找值为x的元素时,查找时的平均查找长度(即x同元素的平均比较次数,假定查找每个元素的概率都相等)为()。A、nB、n/2C、(n+1)/2D、(n-1)/2
考题
单选题在一个长度为n的线性表中顺序查找值为x的元素时,查找时的平均查找长度(即x同元素的平均比较次数,假定查找每个元素的概率都相等)为()。A
nB
n/2C
(n+1)/2D
(n-1)/2
考题
填空题对于n个元素的顺序表采用顺序查找,且使用监视哨。若查找成功,则比较关键字的次数最多为()次;若查找失败,则比较关键字的次数最少为()
热门标签
最新试卷