网友您好, 请在下方输入框内输入要搜索的题目:

题目内容 (请给出正确答案)

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个有序整数数列已放在一维数组中,给定下列程序中,函数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的有序表中查找一个元素的平均查找长度是()。 A.O(n2)B.O(nlogn)C.O(n)D.O(logn)

考题 下列给定程序中函数fun的功能是:从整数10到55之间,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定函数中al放个位数,a2放十位数。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!

考题 下列给定程序中,函数fun的功能是:从整数l0-55,查找能被3整除且有一位上的数值是5的数,把这些:故放在b所指的数组中,这些数的个数作为函数值返回。规定函数中al放位数,a2放十位数。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:

考题 给定程序MODll.C中函数fun的功能是:找出100至n(不大于1000)之间三位数字相等的所有整数,把这些整数放在s所指数组中,个数作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

考题 给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置O)。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:部分源程序在文件BLANKl.C中。不得增行或删行,也不得更改程序的结构!试题程序:

考题 已知有序数组a的前10000个元素是随机整数,现需查找某个整数是否在该数中,以下方法中,()的查找效率最高A.二分查找法 B.顺序查找法 C.逆序查找法 D.哈希查找法

考题 已知有序数组a的前10000个元素是随机整数,现需查找某个整数是否在该数组中。以下方法中,( )的查找效率最高。A.二分查找法 B.顺序查找法 C.逆序查找法 D.哈希查找法

考题 以下函数在a[0]到a[n-1]中,用折半查找算法查找关键字等于k的记录,查找成功返回该记录的下标,失败时返回-1,完成程序中的空格。

考题 利用折半查找算法在长为n的有序表R中插入一个元素x,并保持表的有 序性。 void Bisearch (int R[], int n, int x)