数据结构实验之查找四:二分查找

    xiaoxiao2026-04-23  2

    这道题的算法思想就是:每次将数组中的中间元素与输入的元素相比较,若大于输入的元素,则将j=mid-1,若小于输入的元素,则i=mid+1;若等于,则将mid的值输出即可;注意判定的条件是i<=j。

    代码如下:

    #include <stdio.h> int a[1000000]; int main(){     int n,m,i,d,j,mid,f;     scanf("%d %d",&n,&m);     for(i=0;i<n;i++)         scanf("%d",&a[i]);     while(m--){         f=0;         scanf("%d",&d);         i=0;         j=n-1;         while(i<=j){/*判定条件要始终满足i<=j*/             mid=(i+j)/2;             if(d>a[mid])                 i=mid+1;             else if(d<a[mid])                 j=mid-1;             else{                 f=1;                 printf("%d\n",mid);                 break;             }         }         if(f==0)             printf("-1\n");     }     return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1309155.html
    最新回复(0)