笔试题汇集之常见算法篇(C/C++)

来源:互联网 发布:linux find type d 编辑:程序博客网 时间:2024/06/06 03:16

//二分查找算法

int BSearch(int a[],int key,int n)

{

  int low = 0;

  int high =n-1;

  int mid;

  while(low<= high) 

  {

     mid =(low+high)/2;

     if(a[mid]== key)

        returnmid;

     elseif(a[mid] < key)

        low =mid+1;

     else

        high =mid-1;

  }

  return -1;

}

 

 

//写一个函数找出一个整数数组中,第二大的数 microsoft

const int MINNUMBER = -32767;

int find_sec_max(int data[] , int count)

{

int maxnumber = data[0];

int sec_max = MINNUMBER;

for(int i = 1 ; i <count ; i++)

{

if(data[i] > maxnumber)

{

sec_max = maxnumber;

maxnumber = data[i];

} else {

if(data[i] > sec_max)

sec_max = data[i];

}

}

return sec_max;

}

 

 

斐波拉契数列递归实现的方法如下:

 int  Funct( int n )

{

   if(n==0) return 1;

   if(n==1) return 1;

   retrurn  Funct(n-1) + Funct(n-2);

}

如何不使用递归,来实现上述函数?

int  Funct( int n )  //  n 为非负整数

{

   int a=1;

   int b=1;

   int c;

   if(n==0 || n == 1)

        return  1;

   for(int i=1;i<n;i++)

   {

     c=a+b;

     a=b;

     b=c;

   }

   return b;

}

 

 

实现任意长度的整数相加或者相乘功能。

void bigadd(char* num,char* str,int len)

{

    for(int i=len;i>0;i--)

    {

        num[i] += str[i];

        int j = i;

        while(num[j]>=10)

        {

            num[j--] -=10;

            num[j] += 1;

        }

    }

}

0 0
原创粉丝点击