以下是引用liufashuai在2013-8-7 09:43:32的发言:
就是想。你那样做效率真的比这样好么
就是想。你那样做效率真的比这样好么
用二分找边界,通常情况下比我写的顺序要高...
不信,自己证明

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
程序代码:int element_count(int * set, int len, int e)
{
int f, a, b, t;
for(a = 0, b = len - 1; a < b; set[t = a + b >> 1] < e ? (a = t + 1) : (b = t));
for(f = a, b = len - 1; a < b; set[t = a + b >> 1] <= e ? (a = t + 1) : (b = t));
return b - f;
}





程序代码:int element_count(int * set, int len, int e)
{
int t;
if(set[0] == e && set[len - 1] == e) return len;
if(set[0] > e || set[len - 1] < e) return 0;
t = len / 2;
return element_count(set, t, e) + element_count(set + t, len - t, e);
}


