题目
以下性序定折干查找 [ 填空 2 ] 应填 #include<stdio.h>int main(){ int a,b,mid,found=0,key; int x[10]=(1,3,6,7,10,16,35,41,43,56); scanf("%d",&key); a=0;b=9; do{ [ 填空 1 ] if(key==x[mid]) found=1; else if([ 填空 2 ]) b =mid-1; else [ 填空 3 ]: }while (!found && a<=b); if(found){ printf("%d in %dn",key,mid); } else printf("not found"); return 0;}A key < x [ mid ] B key > x [ mid ] C key = = x [ mid ] D Key = x [ mid ]
以下性序定折干查找 [ 填空 2 ] 应填
#include<stdio.h>
int main() { int a,b,mid,found=0,key; int x[10]={1,3,6,7,10,16,35,41,43,56}; scanf("%d",&key); a=0;b=9; do{
[ 填空 1 ] if(key==x[mid]) found=1; else if([ 填空 2 ]) b =mid-1; else [ 填空 3 ]: }while (!found && a<=b); if(found){ printf("%d in %d\n",key,mid); } else printf("not found"); return 0; }
A key < x [ mid ]
B key > x [ mid ]
C key = = x [ mid ]
D Key = x [ mid ]
题目解答
答案
答案:
A key < x [ mid ]
解析:
当最高位下标调小 一位
key < x [ mid ] 时候 应该使 b =mid-1;
解析
步骤 1:确定填空 1 的内容
在二分查找算法中,首先需要计算中间位置的下标。因此,填空 1 应该是计算中间位置的语句,即 `mid = (a + b) / 2;`。
步骤 2:确定填空 2 的内容
在二分查找算法中,如果目标值小于中间位置的值,那么需要将查找范围缩小到左半部分,即更新 `b` 的值为 `mid - 1`。因此,填空 2 应该是判断目标值是否小于中间位置的值,即 `key < x[mid]`。
步骤 3:确定填空 3 的内容
如果目标值大于中间位置的值,那么需要将查找范围缩小到右半部分,即更新 `a` 的值为 `mid + 1`。因此,填空 3 应该是更新 `a` 的值,即 `a = mid + 1;`。
在二分查找算法中,首先需要计算中间位置的下标。因此,填空 1 应该是计算中间位置的语句,即 `mid = (a + b) / 2;`。
步骤 2:确定填空 2 的内容
在二分查找算法中,如果目标值小于中间位置的值,那么需要将查找范围缩小到左半部分,即更新 `b` 的值为 `mid - 1`。因此,填空 2 应该是判断目标值是否小于中间位置的值,即 `key < x[mid]`。
步骤 3:确定填空 3 的内容
如果目标值大于中间位置的值,那么需要将查找范围缩小到右半部分,即更新 `a` 的值为 `mid + 1`。因此,填空 3 应该是更新 `a` 的值,即 `a = mid + 1;`。