面试中经常出现的算法1(整理)

来源:互联网 发布:淘宝客定向计划取名 编辑:程序博客网 时间:2024/05/22 17:24
//二分查找的代码.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 = (m+l)/2;        }        else if(a[m] < val)        {        l = m;        m = (m+r)/2;        }        else        return m;    }    return -1;   //没有找到}


//写出在母串中查找子串出现次数的代码.int count1(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;}


//查找第一个匹配子串位置,如果返回的是s1长度len1表示没有找到int find(char* s1,char* s2)//s2子串{    int i=0,j;    int len1 = strlen(s1);    int len2 = strlen(s2);    if(len1-len2<0)        return len1;    for(;i<len1;i++)    {        int m = i;        for(j=0;j<len2;j++)        {            if(s1[m]!=s2[j])                break;            m++;        }        if(j==len2)            break;    }    return i;}



//写出快速排序或者某种排序算法代码//快速排序:void qsort(int *a, int left, int right){    if(left >= right)/*如果左边索引大于或者等于右边的索引就代表已经整理完成一个组了*/    {        return ;    }    int i = left;    int j = right;    int key = a[left];    while(i < j)/*控制在当组内寻找一遍*/    {        while(i < j && key <= a[j])        {            j--;/*向前寻找*/        }        a[i] = a[j];        while(i < j && key >= a[i])        {            i++;        }        a[j] = a[i];    }    a[i] = key;/*当在当组内找完一遍以后就把中间数key回归*/    qsort(a, left, i - 1);    qsort(a, i + 1, right);}//冒泡排序:void buble(int *a,int n){    for(int i=0;i<n-1;i++)    {        for(int j=1;j<n-i;j++)        {            if(a[j]>a[j-1])            {                int temp=a[j];                a[j] = a[j-1];                a[j-1] = temp;            }        }    }}//插入排序:void insertsort(int* a,int n){    int key,i,j;    for(j=1;j<n;j++)    {        key = a[j];        for(i=j;i>=0&&a[i]>key;i--)        {            a[i] = a[i-1];        }        a[i] = key;    }}



0 0