• 2021-04-14
    代码填空【使用递归实现二分查找】 int binarySearch(int a[], int key, int low, int high) { if (low > high) return -1; int mid; mid = (low + high) / 2; if (key == a[mid]) return mid; else if (key < a[mid]) return ________(1)__________; else return ________(2)______________; }
  • (1) binarySearch(a, key, low, mid - 1) (2) binarySearch(a, key, mid + 1, high)

    举一反三

    内容

    • 0

      折半查找,完善以下程序: #include main() { int a[10]={1,3,5,7,9,11,13,15,17,19},k,low,high,mid,cnt; low=0;high=9;cnt=0; printf("请输入要查找的数:"); scanf("%d",&k); while( 空1 ) { cnt++; mid=(low+high)/2; if(k == a[mid]) break; else if(k > a[mid]) 空2 空3 }

    • 1

      设low和high分别是在有序表中折半查找的指针,如果查找的关键字Key大于low和high的中间值mid所指的关键字,则正确缩小查找区间的是( )。 A: high=mid+1 B: high=mid C: low=mid+1 D: low=mid

    • 2

      折半查找的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。如果该待查元素的值大于中点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前,函数binary的作用是应用折半查找法从存有10个整数的a数组中对关键字m进行查找,若找到,返回其下标值;反之,返回-1。请填空。binary (int a&#91;10&#93;,int m){ int low=0,high=9,mid;while (low<;=high){mid=(low+high)/2;if(m<;a&#91;mid&#93;)____;else if(m>;a&#91;mid&#93;)____ ;else return(mid);}return(-1);}

    • 3

      折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。函数binary的作用是应用折半查找法从存有的10个整数的a数组中对关键字m进行查找,若找到,返回其下标值;反之返回-1;请选择填空。 binary(int a&#91;10&#93;,int m) {int low=0,high=9,mid; while(low<=high) {mid=(low+high)/2;if(m<a&#91;mid&#93;) ____; if(m>a&#91;mid&#93;) low=mid+1; else return(mid); } return(-1); }

    • 4

      struct record{int key; int others;}; int hashsqsearch(struct record hashtable[ ],int k) { int i,j; j=i=k % p; while (hashtable[j].key!=k&&hashtable[j].flag!=0){ j=(____________) %m; if (i==j) return(-1); } if (_______________________ ) return(j); else return(-1); }