二分查找:
int bisearch(int *a,int x,int y,int v){ int m; while(x<y){ m=x+(y-x)/2; if(a[m]==v) return m; else if(a[m]>v) y=m; else x=m+1; } return -1; }
二分查找求下界:
int lower_bound(int *a,int x,int y,int v){ int m; while(x<y){ m=x+(y-x)/2; if(a[m]>=v) return m; else x=m+1; } return -1; }
二分查找求上界:
int upper_bound(int *a,int x,int y,int v){ int m; while(x<y){ m=x+(y-x)/2; if(a[m]<=v) return m; else x=m+1; } return -1; }
时间: 2024-09-29 03:36:17