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

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


参考答案和解析
正确

相关考题:

有以下程序void f(int n, int *r){ int r1=0;if(n%3==0) r1=n/3;else if(n%5==0) r1=n/5;else f(--n,r1);*r=r1;}main( ){ int m=7,r;f(m,r); printf("%d\n",r);}程序运行后的输出结果是A) 2B) 1C)3D) 0

阅读下面程序: include void fun(int n) { int x(5); static int y(10); if(n>0) { 阅读下面程序:include<iostream.h>void fun(int n){int x(5);static int y(10);if(n>0){++x;++y;cout<<x<<","<<y<<end1;}}void main(){int m(1);fun(m);}则该程序的输出结果是______。

阅读下面程序: include void f(int n) { int x(5); static int y(10); if(n>0) { ++ 阅读下面程序:include<iostream.h>void f(int n){int x(5);static int y(10);if(n>0){++x;++y;cout<<x<<","<<y<<endl;}}void main(){int m(1);f(m),}则该程序的输出结果是【 】

有以下程序 void f(int n,int *r) { int r1=0; if(n%3==0) r1=n/3; else if(n%5==0) r1=n/5; else f(--n,r1); *r=r1; } main() { int m=7,r; f(m,r);printf("%d",r); } 程序运行后的输出结果是A.2B.1C.3D.0

下面程序的输出结果是()。include f(int b[],int n){ int i,r;r = 1;for(i=0;i 下面程序的输出结果是( )。 include <stcdio.h> f(int b[],int n) { int i,r; r = 1; for(i=0;i<=n;i++) r=r*b[i]; return r; } main() { int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d\n",x); }A.720B.120C.24D.6

以下程序的执行结果是【】。 include int f(int b[],int n) { int i,r=1; for(i=0;i 以下程序的执行结果是【 】。include<iostream.h>int f(int b[],int n){int i,r=1;for(i=0;i<n;i++)r=r*b[i];return r;}void main(){int x,a[]={2,3,4,5,6,7,8,9};x=f(a,3);cout<<x<<endl;}

请读程序: include f(int b[],int n) { int i,r; r=l; for(i=0;i 请读程序: # include<stdio.h> f(int b[],int n) { int i,r; r=l; for(i=0;i<=n;i++)r=r*b[i]; return r; } main() { int x a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf ("%d\n",x); } 上面程序的输出结果是 ( )A.720B.120C.24D.6

以下程序执行后的输出结果是( )。include usingnamespacestd;void try(int,int,int,in 以下程序执行后的输出结果是( )。 #include <iostream> using namespace std; void try(int,int,int,int); int main ( ) { int x,y,z,r; x=1; y=2; try(x,y,z,r); cout<<r<<end1; return 0; } void try(int x,int y, int z,int r) { z = x+y; x = X*X; y = y*y; r = z+x+y; }A.18B.9C.10D.不确定

请编写一个函数void fun(int p[],int n,int c),其中数组p的元素按由小到大的顺序排列,其元素个数为n。函数fun()的功能是将c插入到数组p中,且保持数组的升序排列。注意:部分源程序已存在文件PROC9.cpp中。请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句;文件PROC9.cpp的内容如下://PROC9.cppinclude <iostream>include <string>using namespace std;define M 30void fun(int p[ ],int n,int c);int main (){int pp[M],n,i;int fg, c;cout<<"Please input n:\n";cin>>n;cout<<"Please input the n data:\n";for (i=0; i<n; i++)cin>>pp [i];cout<<"Please input c:\n";cin>>c;fun (pp, n, c);for (i=0; i<n; i++)cout<<pp [i] << " " ;cout<<end1;return 0;}void fun(int p[ ],int n, int c){//* * * * * * * * *}

阅读下列函数说明和C代码,[说明]所谓货郎担问题,是指给定一个无向图,并已知各边的权,在这样的图中,要找一个闭合回路,使回路经过图中的每一个点,而且回路各边的权之和最小。应用贪婪法求解该问题,程序先计算由各点构成的所有边的长度(作为边的权值),按长度大小对各边进行排序后,按贪婪准则从排序后的各边中选择组成回路的边,贪婪准则使得边的选择按各边长度从小到大选择。函数中使用的预定义符号如下:define M 100typedef struct{/*x为两端点p1、p2之间的距离,p1、p2所组成边的长度*/float x;int p1,p2;}tdr;typedef struct{/*p1、p2为和端点相联系的两个端点,n为端点的度*/int n,p1,p2;}tr;typedef struct{/*给出两点坐标*/float x,y;}tpd;typedef int tl[M];int n=10;[函数]float distance(tpd a,tpd b);/*计算端点a、b之间的距离*/void sortArr(tdr a[M],int m);/*将已经计算好的距离关系表按距离大小从小到大排序形成排序表,m为边的条数*/int isCircuit(tr r[M],int i,int j);/*判断边(i,j)选入端点关系表r[M]后,是否形成回路,若形成回路返回0*/void selected(tr r[M],int i,int j);/*边(i,j)选入端点关系表r*/void course(tr r [M],tl l[M]);/*从端点关系表r中得出回路轨迹表*/void exchange(tdr a[M],int m,int b);/*调整表排序表,b表示是否可调,即是否有长度相同的边存在*/void travling(tpd pd [M],int n,float dist,tl locus[M])/*dist记录总路程*/{tdr dr[M];/*距离关系表*/tr r[M];/*端点关系表*/int i,j,k,h,m;/*h表示选入端点关系表中的边数*/int b;/*标识是否有长度相等的边*/k=0;/*计算距离关系表中各边的长度*/for(i=1;i<n; i++){for(j=i+1;J<=n;j++){k++;dr[k].x=(1);dr[k].pl=i;dr[k].p2=j;}}m=k;sortArr(dr,m);/*按距离大小从小到大排序形成排序表*/do{b=1;dist=0;k=h=0:do{k++;i=dr[k].p1;j=dr[k].p2;if((r(i].n<=1)(r[j].n<=1)){/*度数不能大于2*/if (2) {/*若边(i,j)加入r后形成回路,则不能加入*/(3);h++;dist+=dr[k].x;}else if (4) {/*最后一边选入r成回路,则该边必须加入且得到解*/selected(r,i,j);h++:dist+=dr[k].x;}}}while((k !=n) (h !=n));if(h==n){/*最后一边选入构成回路,完成输出结果*/course(r,locus);}else(/*找不到解,调整dr,交换表中边长相同的边在表中的顺序,并将b置0*/(5);}}while(!b);}(1)

有以下程序includevoid f(int *p,int *q);main(){ int m=1,n=2,*r=m;f(r, n 有以下程序 #include<stdio.h> void f(int *p,int *q); main() { int m=1,n=2,*r=m; f(r, n); printf("%d,%d",m,n); } void f(int*p,int*q) {p=p+1; *q=*q+1;) 程序运行后的输出结果是______。A.1,3B.2,3C.1,4D.1,2

有以下程序includestdio.hint*f(int*p,int*q);main( ){int m=1,n=2,*r=m;r=f(r,stdio.hint*f(int*p,int*q);main( ){int m=1,n=2,*r=m;r=f(r,n);printf(”%d\n”,*r);}int-f(int*P,int*q)(return(*p*q)?p:q;)程序运行后的输出结果是______。

下列程序的执行结果是( )。includeint fun(int b[],int n){ int i,r=1;for(i=0;i 下列程序的执行结果是( )。 #include<iostream.h> int fun(int b[],int n) { int i,r=1; for(i=0;i<n;i++) r=r*b[i]; return r; } void main() { int x,a[]={1,2,3,4,5,6,7,8}; x=fun(a,3); cout<<x<<end1; }A.5B.6C.7D.8

以下程序的执行结果是 ______。 include int max(int x,int y) { ret 以下程序的执行结果是 ______。include<iostream.h>int max(int x,int y){return(x>y? x:y);}void main(){int n=2,m=10;max(n,m)--;cout<<"n="<<n<<",m="<<m<<endl;}

阅读以下函数说明和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);}

有以下程序: void f(int n,int * r) {int r1=0; if(n%3==0)r1=n/3; else if(n%5==0)r1=n/5; else f(--n,r1); *r=r1;} main() {intm=7,r; f(m,r);printf("%d\n",r);} 程序运行后的输出结果是______。A.2B.1C.3D.0

下列程序的输出结果为【 】。ineludeint max(int x, int y){return (x 下列程序的输出结果为【 】。inelude<iostream. h>int max(int x, int y){return (x>y? x: y); }void main() {int n=3, m=12;max(m, n)++cout<<"m="<<m<<", n= "<<n<<end1;}

以下程序执行后的输出结果是include using namespace std;void try(int,int,int,int) 以下程序执行后的输出结果是 #include <iostream> using namespace std; void try(int,int,int,int); int main () { int x,y,z,r; x =1 ; y = 2; try(x,y,z,r); cout<<r<<endl; return 0; } void try(int x,int y,int z,int r) { z = x+y; x = x*x; y = y*y; r = z+x+y; }A.18B.9C.10D.不确定

以下程序的执行结果是()。includeint fun(int b[],int n){int i,r=1;for(i=0;i 以下程序的执行结果是( )。 #include<iostream.h> int fun(int b[],int n) { int i,r=1; for(i=0;i<n;i++) r=r*b[i]; } void main() { int x,a[]={1,2,3,4,5,6,7,8}; x=fun(a,3); cout<<x<<endl; }A.5B.6C.7D.8

若有以下调用语句,则不正确的 fun 函数的首部是( )。 void main() { int a[50],n; fun(n,a[9]); }A.void fun(int m,int x[])B.void fun(int s,int h[])C.void fun(intp,int * s)D.void fun(int n,int a)

读程序:includef(int b[],int n){ int i,r;r=1;for(i=0;i 读程序: #include <stdio.h> f(int b[],int n) { int i,r; r=1; for(i=0;i<=n;i++) r=r*b[i]; return r; } main() { int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d\n",x); } 上面程序的输出结果是( )。A.720B.120C.24D.6

若有以下调用语句,则不正确的fun函数的首部是( )。 main() { int a[50],n; fun(n,a[9]); ┆ }A.void fun(int m,int x[])B.void fun(int s,int h[41])C.void fun(int p,int *s)D.void fun(int n,int a)

以下程序执行后的输出结果是include.using namespace std;void try(int,int,int,int) 以下程序执行后的输出结果是 #include<iostream>. using namespace std; void try(int,int,int,int); int main() { int x,y,z,r; x=1; y=2; try(x,y,z,r); cout<<r<<end1; return 0; } void try(int x,int y, int z,int r) { z = x+y; x = x*x; y = y*y; r = z+x+y; }A.18B.9C.10D.不确定

试题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”);}

第四题 阅读以下说明、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

请读程序: #include f(int b[],int n) { int i,r;r=1; for(i=0;i=n;i++)r=r*b[i]; return r; } main() { int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d/n",x); } 上面程序的输出结果是()A、720B、120C、24D、6

完成下列折半插入排序算法。 Void binasort(struct node r[MAXSIZE],int n) {for(i=2;i=n;i++){ r[0]=r[i];low=1;high=i-1; while(low=high){ mid=(low+high)/2; if(r[0].key else low=mid+1 ; } for(j=i-1;j=low;j- -)r[j+1]=r[j] ; r[low]=() ; } }

填空题完成下列折半插入排序算法。 Void binasort(struct node r[MAXSIZE],int n) {for(i=2;i else low=mid+1 ; } for(j=i-1;j=low;j- -)r[j+1]=r[j] ; r[low]=() ; } }