//二分查找算法
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;
}
}
}