常用算法总结

  • 二分查找法
int bfind(int *a,int len,int val)  
{  
    int m=len/2;  
    int l=0;  
    int r=len;  
    while(l!=m&&r!=m)  
    {  
          if(a[m]>val)  
          {  
              r=m;  
              m=(l+m)/2;  
          }  
          if(a[m]<val)  
          {  
              l=m;  
              m=(r+m)/2;  
          }  
         return m;   
    }  
} 
  • 在母串中查找子串出现到次数

 

  • 查找第一个匹配子串位置,如果返回的是s1长度len1表示没有找到

 

  • 实现字符串反转
void reverse(char *str)  
{  
      //assert(str!=NUll)   
	  int len=1;
	  char *p2=str;
      while(*++p2)len++;//指向末尾,一般不让用strlen
	  char *newstr=(char*)malloc(len);
	  p2--;
	  while(p2!=str-1)*newstr++=*p2--;
	  memcpy(str,newstr-len,len);
	  free(newstr-len);
} 
posted @ 2011-10-08 10:36  卿之  阅读(70)  评论(0)    收藏  举报
无觅相关文章插件,快速提升流量