二分查找:
int bs(int *a,int len,int val)
{
int l=0;
int m=len/2;
int r=len-1;
while(l!=m && r!= m)
{
if(a[m] > val)
{
r = m;
m = (m+l)/2;
}
else if(a[m] < val)
{
l = m;
m = (m+r)/2;
}
else
return m;
}
return -1; //cannot find
}
子串次数:
int counts(char* str,char* s)
{
char* s1;
char* s2;
int count = 0;
while(*str!='/0')
{
s1 = str;
s2 = s;
while(*s2 == *s1&&(*s2!='/0')&&(*s1!='/0'))
{
s2++;
s1++;
}
if(*s2 == '/0')
count++;
str++;
}
return count;
}