首页 > 试题广场 >

若有 18 个元素的有序表存放在一维数组 A[19] 中,第

[单选题]

若有 18 个元素的有序表存放在一维数组 A[19] 中,第一个元素放 A[1] 中,现进行二分查找,则查找 A 3 ]的比较序列的下标依次为 (      )

  • 1,2,3
  • 9,5,2,3
  • 9,5,3
  • 9,4,2,3
二分基本的查询下标的方法为(首下标+尾下标)/2,如果该下标非查询值,要剔除后在左边或右边继续循环。记住:把已经查询的值剔除,剔除,剔除~
发表于 2018-06-30 11:49:28 回复(0)
待查找的数据小于A[9]时 向左移一位 (1+8)/2=4.5
发表于 2017-07-26 23:36:41 回复(0)
如果不是则需要剔除。。哎。还是大意了。
发表于 2019-01-18 22:03:36 回复(0)
#include<iostream>

using namespace std;

void binSearch(int *num,int target,int low,int high);

int main()
{
    int *num;
    int target,numLength;
    cout<<"请输入数组长度 "<<endl;
    cin>>numLength; 
    num = new int[numLength+1];
    cout<<"请输入要查找的数组"<<endl;
    for(int i=1;i<=numLength;i++)
    {
        cin>>num[i];
    }
    cout<<"请输入要查找的数"<<endl;
    cin>>target;
    binSearch(num,target,1,numLength);
    return 0;
}

void binSearch(int *num,int target,int low,int high)
{
    if(low > high)    
        cout<<"查找失败!"; 
    else
    {
        int mid = (low+high)/2;
        cout<<mid<<" "; 
        if(num[mid] > target)
            binSearch(num,target,low,mid-1);
        else if(num[mid] < target)
            binSearch(num,target,mid+1,high);
        else
            cout<<"\n查找成功!";
    } 
}

临时写了一下,结果为9 4 2 3

编辑于 2018-05-02 21:03:54 回复(1)
不太明白,(18+1)/2 = 9, (9+1)/2 = 5啊
发表于 2017-07-24 21:07:03 回复(4)

对N/2的下取整

发表于 2017-07-06 21:44:50 回复(2)
19个元素,先比较最中间的元素A[10] -> 然后 A[(10+1)/2] A[5] -> A[(5+1)/2] A[3]。感觉是这样的,你们觉得呢?
发表于 2018-02-19 11:00:37 回复(0)
第一次查找,队首为下标1,队尾下标18,所以是(1+18)/2=9
第二次查找,队首为1,队尾为9-1=8,所以是(1+8)/2=4
第三次,队首1,队尾4-1=3,(1+3)/2=2
第四次,队首2+1=3,队尾3,(3+3)/2=3
发表于 2017-08-10 11:14:50 回复(1)
我第一次计算没有把0计算进去,因此得出9,5,3。
答案是把下标为0的也算进去了。
第一次:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 中间点在9
第二次:0 1 2 3 4 5 6 7 8 9 中间点在4和5之间,取4
第三次:0 1 2 3 4 中间点在2
第四次:2 3 4 中间点在3,与下标一致。取出数据
发表于 2018-08-18 23:56:47 回复(1)
下一次遇到这种题还是画一下吧。
发表于 2019-03-29 16:29:59 回复(0)
剔除;
发表于 2018-09-07 10:26:32 回复(0)
若有 18 个元素的有序表存放在一维数组 A[19] 中,第一个元素放 A[1] 中,现进行二分查找,则查找 A 3 ]的比较序列的下标依次

1次查找:(1+18)/2=9
2次查找:(1+8)/2=4
3次查找:(1+3)/2=2
4次查找:(3+3)=3
发表于 2018-06-02 23:32:55 回复(0)