int binary_find(int * p, int m, int n) { if(p[0]>=n) return 0; if(n>=p[m-1]) return m-1; int i=(m-1)>>1; if(p[i]==n) return i; return (p[i]>n)?binary_find(p,i+1,n):(binary_find(p+i+1,m-i-1,n)+i+1); }
少判断一句了....... int binary_find(int * p, int m, int n) { if(p[0]>=n) return 0; if(n>=p[m-1]) return m-1; int i=(m-1)>>1; if(i==0) return 1; if(p[i]==n) return i; return (p[i]>n)?binary_find(p,i+1,n):(binary_find(p+i+1,m-i-1,n)+i+1); }
似乎还是错了,请用以下测试: int main() { int a[2] = {1,3}; int b = binary_find(a, 1, 2); cout << b << endl; return 1; }
首先,我觉得我确实技术上不行7年开发,VC是四年
GDI封装了什么内核对像我还真想请教一下
系统有三种消息没错,但是当时我说的是队列里的消息,系统内的三种消息我当然知道
{
if(p[0]>=n)
return 0;
if(n>=p[m-1])
return m-1;
int i=(m-1)>>1;
if(p[i]==n)
return i;
return (p[i]>n)?binary_find(p,i+1,n):(binary_find(p+i+1,m-i-1,n)+i+1);
}
int binary_find(int * p, int m, int n)
{
if(p[0]>=n)
return 0;
if(n>=p[m-1])
return m-1;
int i=(m-1)>>1;
if(i==0)
return 1;
if(p[i]==n)
return i;
return (p[i]>n)?binary_find(p,i+1,n):(binary_find(p+i+1,m-i-1,n)+i+1);
}
似乎还是错了,请用以下测试:
int main()
{
int a[2] = {1,3};
int b = binary_find(a, 1, 2);
cout << b << endl;
return 1;
}