对一组数升序排列,再输入一个数寻找它的位置。
程序代码:
#include <stdio.h> int BinSearch(int y, int b[],int a) { int left,right,mid,flag; left=0;right=y-1;flag=-1; while(left<=right) { mid=(left+right)/2; if(a==b[mid]) { flag=1; break; } else if(a>b[mid]) left=mid+1; else right=mid-1; } if(flag==1){ return mid; } else{ return -1; } } int main() { int n; int a[100]; int i,j,k,t,x,h; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",&a[i]); } for(i=0;i<n;i++) { k=i; for(j=i;j<n-1;j++) { if(a[k]>a[j+1]){ k=j+1; } } if(k!=i){ t=a[i]; a[i]=a[k]; a[k]=t; } } scanf("%d",&x); h=BinSearch(n,a[i],x); if(h!=-1) { printf("position=%d",h); } else{ printf("not found!"); } return 0; }
这个错误要怎么解决?
程序的目的是:主函数中先输入n,再输入n个数,对这n个数进行升序排列。再输入一个数,调用函数来寻找它的位置。(调用的函数使用折半查找法寻找位置)