网友您好, 请在下方输入框内输入要搜索的题目:
题目内容
(请给出正确答案)
已知有序数组a的前10000个元素是随机整数,现需查找某个整数是否在该数组中。以下方法中,( )的查找效率最高。
A.二分查找法
B.顺序查找法
C.逆序查找法
D.哈希查找法
B.顺序查找法
C.逆序查找法
D.哈希查找法
参考答案
参考解析
解析:
更多 “已知有序数组a的前10000个元素是随机整数,现需查找某个整数是否在该数组中。以下方法中,( )的查找效率最高。A.二分查找法 B.顺序查找法 C.逆序查找法 D.哈希查找法” 相关考题
考题
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");}
考题
将数据元素2,4,6,8,10,12,14,16,18,20依次存放于一个一维数组中,然后采用折半查找方法查找数组元素12,被比较过的数组元素的下标依次为(52)。A.10,16,12B.10,12,16C.5,8,6D.5,6,8
考题
在13个元素构成的有序表A[1..13]中进行折半查找(或称为二分查找,向下取整)。那么以下叙述中,错误的是()。A.无论要查找哪个元素,都是先与A[7]进行比较B.若要查找的元素等于A[9],则分别需与A[7]、A[11]、A[9]进行比较C.无论要查找的元素是否在A[]中,最多与表中的4个元素比较即可D.若待查找的元素不在A[]中,最少需要与表中的3个元素进行比较
考题
第四题 阅读以下说明、C函数和问题,回答问题1和问题2将解答填入答题纸的对应栏内。
【说明】
当数组中的元素已经排列有序时,可以采用折半查找(二分查找)法查找一个元素。下面的函数biSearch(int r[],int low,int high,int key)用非递归方式在数组r中进行二分查找,函数biSearch_rec(int r[],int low,int high,int key)采用递归方式在数组r中进行二分查找,函数的返回值都为所找到元素的下标;若找不到,则返回-1。
【C函数1】
int biSearch(int r[],int low,int high,int key)
//r[low..high] 中的元素按非递减顺序排列
//用二分查找法在数组r中查找与key相同的元素
//若找到则返回该元素在数组r的下标,否则返回-1
{
int mid;
while((1)) {
mid = (low+high)/2 ;
if (key ==r[mid])
return mid;
else if (key (2);
else
(3);
}/*while*/
return -1;
}/*biSearch*/
【C 函数 2】
int biSearch_rec(int r[],int low,int high,int key)
//r[low..high]中的元素按非递减顺序排列
//用二分查找法在数组r中查找与key相同的元素
//若找到则返回该元素在数组r的下标,否则返回-1
{
int mid;
if((4)) {
mid = (low+high)/2 ;
if (key ==r[mid])
return mid;
else if (key return biSearch_rec((5),key);
else
return biSearch_rec((6),key);
}/*if*/
return -1;
}/*biSearch_rec*/ 问题:4.1 (12分)
请填充C函数1和C函数2中的空缺,将解答填入答题纸的对应栏内。 问题:4.2 (3分)
若有序数组中有n个元素,采用二分查找法查找一个元素时,最多与( )个数组元素进行比较,即可确定查找结果。
(7)备选答案:
A.[log2(n+1)] B.[n/2] C.n-1 D.n
考题
若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为()。A.9,5,3
B.9,5,2,3
C.1,2,3
D.9,4,2,3
考题
在12个互异元素构成的有序数组 a[1..12] 中进行二分查找(即折半查找,向下取 整),若待查找的元素正好等于a[9],则在此过程中,依次与数组中的( )比较后,查找成功结束。 A.a[6]、 a[7]、 a[8]、 a[9]
B.a[6]、a[9]
C. a[6]、 a[7]、 a[9]
D.a[6]、 a[8]、 a[9]
考题
对于语句int*px[10],以下说法正确的是()。A、px是一个指针,指向一个数组,数组的元素是整数型。B、px是一个数组,其数组的每一个元素是指向整数的指针。C、A和B均错,但它是C语言的正确语句。D、C语言不允许这样的语句
考题
在1000个大小有序的列表中查找某给定元素。用顺序查找法至多需要比较1000次(平均需要500次)可以找到该元素或确定列表中不存在该元素(需要比较1000次),而用折半查找法至多10次比较就可以找到该元素或者确定列表中不存在该元素。由此可以知,折半查找的效率比顺序查找的效率至少高50倍。
考题
单选题若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为()。A
1,2,3B
9,5,2,3C
9,5,3D
9,4,2,3
考题
单选题对于语句int*px[10],以下说法正确的是()。A
px是一个指针,指向一个数组,数组的元素是整数型。B
px是一个数组,其数组的每一个元素是指向整数的指针。C
A和B均错,但它是C语言的正确语句。D
C语言不允许这样的语句
考题
单选题数据结构中,在顺序表的查找中,若记录是有序的,可以使用()方式查找效率更高A
顺序查找B
折半查找C
分块查找D
随机查找
热门标签
最新试卷