注册 登录
编程论坛 数据结构与算法

关于二分法对数据的查找

豆籽 发布于 2014-12-18 21:47, 1000 次点击
int search(int arr[],int key,int n)
  { int mid,low=0,high=n-1;
     while(low<=high)
       { mid=(low+high)/2;
        if(arr[mid]==key)
          { printf("suo cha zhao de zhi zai shu zu d di %d wei,zhi wei %d",mid+1,key);
            return;
          }
        if(arr[mid]>key)
           { high=mid-1;
           }
         else
           {low =mid+1;}
        }
  }

main()
{   int a[100];
    int i,n;
    int key;
    printf("n=");
    scanf ("%d\n",&n);
    printf("shu ru shu zu a li de yuan su:");
    for(i=0;i<n;i++)
    scanf("%d",a[i]);
    printf("\n");
    printf("the number of key is:");
    scanf("%d",&key);
    search(a,key,n);
    getch();
}

我在win tc上编写了用二分法查找一个数据的以上程序,我假设数组a里的元素是按升序排列的,即先不考虑数组元素的排序问题。
程序可以编译成功,但运行结果出了问题,如图,如果我选定n=10,输入数字10之后,就再没有反应了= =,不知道哪里出了错,请各位指点Σ( ° △ °|||)︴,谢了!
2 回复
#2
豆籽2014-12-18 21:49
回复 楼主 豆籽
只有本站会员才能查看附件,请 登录
#3
azzbcc2014-12-18 22:50
scanf ("%d\n",&n);


去掉\n
1