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

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

(算法设计) 说明二分查找的基本思想,并用C/C++语言实现下面的二分查找(折半查找)函数。 bool BSearch(int * source,int n, int data) ; // 在source[n]中查找数据data


参考答案和解析
设输入是一个按非降次序排列的元素表 A[i :j] 和 x,选取 A[(i+j)/2] 与 x 比较,如果A[(i+j)/2]=x ,则返回 (i+j)/2 ,如果 A[(i+j)/2]A[ (i+j)/2+1 :j] 找 x。上述过程被反复递归调用。
更多 “(算法设计) 说明二分查找的基本思想,并用C/C++语言实现下面的二分查找(折半查找)函数。 bool BSearch(int * source,int n, int data) ; // 在source[n]中查找数据data” 相关考题
考题 函数 main() 的功能是 : 在带头结点的单链表中查找数据域中值最小的结点 . 请填空#include stdio.hstruct node{ int data;struct node *next;};int min(struct node *first)/* 指针 first 为链表头指针 */{ strct node *p; int m;p=first-next; m=p-data;p=p-next;for(;p!=NULL;p= _[20]_______ )if(p-datam) m=p-data;return m;}

考题 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");}

考题 ( 12 )有如下类定义和变量定义:class A{publie:A () {data=0;}~A () {}int GetData ( ) coast { return data;}void SetData ( int n ) {data=n;}private:int data;};ccnst A a;A b;下列函数调用中错误的是A ) a .GetData ( ) ;B ) a .SetData ( 10 ) ;C ) b .GetData ( ) ;D ) b .SetData ( 10 ) ;

考题 设序列长度为n,在最坏情况下,时间复杂度为O(log2n)的算法是()。A.二分法查找B.顺序查找C.分块查找D.哈希查找

考题 阅读以下说明和C语言函数,将应填入(n)处。[说明]函数int find_Max_Min(int a[],int n)的功能是:找出n个元素的数组a中的最大元素和最小元素并输出,返回查找过程中元素的比较次数。查找方法如下:比较a[0]和a[n-1],若a[0]大,则交换a[0]和a[n-1]的值:再比较a[1]和a[n-2],若a[1]大,则交换a[1]和a[n-2]的值;以此类推,直到所有的元素都比较完。然后在数组的前半区从前往后找出小元素,在后半区从后往前找出大元素。[函数]int find_Max_Min(int a[],int n){/*找出n个元素的数组a的最大、最小元素并输出,返回查找过程元素中的比较次数*/int i,Count=0;int temp,Maxnum,Minnum;for(i=0; i<n/2; i++){Count=Count+1 /*元素比较次数计数*/if(a[i]>a[(1)]){/*数组元素交换代码略*/}}Maxnum=a[n-1]; Minnum=a[0];for(i=1;i<n/2+n%2;i++){Count=(2); /*元素比较次数计数*/Minnum=(3)? a[i]:Minnum; /*找最小元素*/Maxnum=(4)?(5):Maxnum; /*找最大元素*/}printf("Max=%d\n",Maxnum);printf("Min=%d\n",Minnum);return Count;}

考题 使用二分查找算法在一个有序序列中查找一个元素的时间复杂度为()A.O(N)B.O(logN)C.O(N*N)D.O(N*logN)

考题 阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。【说明】设计一个类模板SamPle用于对一个有序数组采用二分法查找元素下标。【C++程序】include < iostream. h >define Max 100 //最多元素个数template < class T >class Sample{T A[Max]: //存放有序数序int n: //实际元素个数publicSample( ) { } //默认构造函数Sample(T a[] ,int i); //初始化构造函数int seek(T c);void disp( ){for(int i=0;i <n;i ++)cout<<A[i] <<" ";cout<<endl:} } template < class T >Sample <T>: :Sample(T a[ ],int i){n=i:for( intj =0;j < i;j ++ )(1);}template < class T >int Sample < T >:: seek( T c){int low =0,high = n-1 ,mid;while((2)){mid = (low + high)/2;if((3))return mid;else if( (4) )low=mid+|;else(5);}return-1;}void main( ){char a[ ] ="acegkmpwxz";Sample < char > s(a, 1);cout<<"元素序列:" ;s. disp( );cout<<"元素'g'的下标:"<<s. seek('g') <<endl;}

考题 请编写一个函数 int find(char s[],char t[]), 该函数在字符串s中查找字符串t,如果找到,则返回字符串t在字符串s中的位置(整数值):否则返回-1。本题要求:用数组方式及两重循环来实现该函数。注意:部分源程序已存在考生文件夹的文件PROC1.cpp中。请勿修改主函数和其他函数中的任何内容,仅在函数find()的花括号中填写若干语句。文件PROC1.cpp的内容如下://PROC1.cppinclude<iostream>using namespace std;int find(char s[],char t[]);const int MAXLINE = 256;int main(){char source[MAXLINE],target[MAXLINE];cout<<"Please input a string for searching:\n";cin.getline(source,MAXLINE);cout<<"Please input a string you want to find:\n";cin.getline(target,MAXLINE);int intPos=find(source,target);if(intPos>=0)cout<<"Finding it,The target string is at index"<<intPos<<"of the source string\n";elsecout<<"Not finding it \n";return 0;}int find(char s[],char t[]){//********}

考题 阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。[说明]下面程序实现十进制向其它进制的转换。[C++程序]include"ioStream.h"include"math.h"includetypedef struct node {int data;node*next;}Node;Class Transform.{DUDlic:void Trans(int d,int i); //d为数字;i为进制void print();private:Node*top;};void Transform.:Trans(int d,int i){int m,n=0;Node*P;while(d>0){(1);d=d/i;p=new Node;if(!n){p->data=m;(2);(3);n++;}else{p->data=m;(4);(5);}}}void Transform.:print(){Node*P;while(top!=NULL){p=top;if(p->data>9)cout<<data+55;elsecout<<data;top=p->next;delete p;}}

考题 函数min()的功能是:在带头结点的单链表中查找数据域中值最小的结点。请填空includestruc 函数min()的功能是:在带头结点的单链表中查找数据域中值最小的结点。请填空include <stdio.h>struct node{ int data;struct node *next;};int min(struct node *first)/*指针first为链表头指针*/{ struct node *p; int m;p=first->next; re=p->data; p=p->next;for( ;p!=NULL;p=【 】)if(p->data<m ) re=p->data;return m;}

考题 ● 对 n 个元素的有序表 A[1..n]进行二分(折半)查找,则成功查找到表中的任意一个元素时,最多与A 中的 (39) 个元素进行比较。(39)

考题 查找较快,且插入和删除操作也比较方便的查找方法是A.分块查找B.二分查找C.顺序查找D.折半查找

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

考题 阅读下列说明和流程图,将应填入(n)的语句写在对应栏内。【流程图说明】下面的流程(如图1所示)用N-S盒图形式描述了在一棵二叉树排序中查找元素的过程,节点有3个成员:data, left和right。其查找的方法是:首先与树的根节点的元素值进行比较:若相等则找到,返回此结点的地址;若要查找的元素小于根节点的元素值,则指针指向此结点的左子树,继续查找;若要查找的元素大于根节点的元素值,则指针指向此结点的右子树,继续查找。直到指针为空,表示此树中不存在所要查找的元素。【算法说明】【流程图】将上题的排序二叉树中查找元素的过程用递归的方法实现。其中NODE是自定义类型:typedef struct node {int data;struct node * left;struct node * right;}NODE;【算法】NODE * SearchSortTree(NODE * tree, int e){if(tree!=NULL){if(tree->data<e)(4); //小于查找左子树else if(tree->data<e)(5); //大于查找左子树else return tree;}return tree;}

考题 在有13个元素构成的有序表data[1..13]中,用折半查找(即二分查找,计算时向下取整)方式查找值等于data[8]的元素时,先后与(41)等元素进行了比较。A.data[7]. data[6]. data[8]B.data[7]. Data[8]C.data[7]. data[10]. data[8]D.data[7]. data[10]、data[9]. data[8]

考题 ●试题一阅读下列说明和流程图,将应填入(n)的语句写在答题纸的对应栏内。【流程图说明】下面的流程(如图1所示)用N-S盒图形式描述了在一棵二叉树排序中查找元素的过程,节点有3个成员:data,left和right。其查找的方法是:首先与树的根节点的元素值进行比较:若相等则找到,返回此结点的地址;若要查找的元素小于根节点的元素值,则指针指向此结点的左子树,继续查找;若要查找的元素大于根节点的元素值,则指针指向此结点的右子树,继续查找。直到指针为空,表示此树中不存在所要查找的元素。【算法说明】【流程图】将上题的排序二叉树中查找元素的过程用递归的方法实现。其中NODE是自定义类型:typedef struct node{int data;struct node*left;struct node*right;}NODE;【算法】NODE*SearchSortTree(NODE*tree,int e){if(tree!=NULL){if(tree-datae)(4) ;∥小于查找左子树else if(tree-datae)(5) ;∥大于查找左子树else return tree;}return tree;}

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

考题 阅渎以下说明和C代码,回答问题,将解答写入答题纸的对应栏内。 【说明】函数bubbleSort(int arr [ ] int n, int (*compare)(int, int)的功能是根据调用时传递的比较函数 compare 对数組arr的前n个元素进行排序。 【C代码】 #define swap(a,b){a=a^b;b=a^b;a=a^b //交换a与b 的值int less(int x, int y){ return((xy)?1: 0);} void bubble Sort(int arr[ ], int n, int (*compare)(int, int)){ int i,j; int swapped= 1; for( i= 0; swapped; 1++) { swapped =0; for(j=0; j 【问题1】设有如下数组定义:int data1[ ]={4,2.6.3,1};int data2[ ]={4,2,6.3,1}int datas3[ ]={4,2,6.3,1}请分别给出下面的函数调用执行后,数组 data1、data2和 data3 各自的元素序列。(1)bubble Sort(data1, 5, less);(2)bubbleSort(data2, 5, larger)(3)bubbleSort(data3, 3, larger)

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

考题 在各种查找方法中,平均查找承担与结点个数n无关的查找方法是()。A、顺序查找B、折半查找C、哈希查找D、分块查找

考题 在各种查找方法中,平均查找长度ASL与结点个数n无关的查找方法是()。A、顺序查找B、折半查找C、哈希查找D、分块查找

考题 简述二分检索(折半查找)算法的基本过程。

考题 数据结构与算法中的各种查找方法中,平均查找长度ASL与结点个数n无关的查找方法是()。A、顺序查找B、折半查找C、哈希查找D、分块查找

考题 数据结构与算法里,时间复杂度是O(n*n)的算法是()。A、简单选择排序B、顺序查找C、折半查找D、快速排序

考题 关于查找算法,不正确的说法是()。A、二分查找法是一种高效的查找方法B、二分查找法可以查找所有数据C、二分查找时每次都与中点数据比较D、二分查找只能应用在有序排列的数据中

考题 单选题数据结构与算法里,时间复杂度是O(n*n)的算法是()。A 简单选择排序B 顺序查找C 折半查找D 快速排序

考题 单选题数据结构与算法中的各种查找方法中,平均查找长度ASL与结点个数n无关的查找方法是()。A 顺序查找B 折半查找C 哈希查找D 分块查找

考题 问答题简述二分检索(折半查找)算法的基本过程。