Fork me on Favorite TV

周记1

#include<stdio.h>

int bisearch(int a[], int i,int n)

{

    int left=1,right=i,s=0;//如果找到s就放索引下标,没有就是0传回判定

    while(left<=right)

    {

       int mid=(left+right)/2;

       if(a[mid]<n){

           left=mid+1;

       }else if(a[mid]>n){

           right=mid-1;

       }else if(a[mid]==n){

           s=mid;

           printf("%d",s);

           break;

       }

    }

    return(s);

}

int main()

{

    int a[100],i,n,r;

    printf("请输入数组元素:");

    for(i=1;i<=6;i++)

       scanf("%d",&a[i]);

 

    printf("请输入您要查找的数");

    scanf("%d",&n);

 

    r=bisearch(a,i-1,n);//调用函数(数组,数组大小,查找的数)

    if(r==0)

       printf("0");

    else

       printf("要查找的数在第%d位",r);

    return 0;

}

 

五、实验心得(实验中存在的疑问或其他

 

 

本次实验中我感到疑惑我要是把这两个if代码去掉那左端和右端的就找不到。然后我小脑瓜灵光一闪,left是<=等right的这样才不会略过left和right的数据。

 

 

 

这是while(left<right)的代码加了这样个if才ok…

 

posted @ 2020-06-01 15:56  我帅得乱七八糟  阅读(122)  评论(0)    收藏  举报