1. 欧几里得算法
求两个数的最大公约数
Gcd(m,n)=Gcd(n,mod(m,n))
Gcd(int m,int n)
{
int t;
while(n>0)
{
t=m%n;
m=n;
n=t;
}
}
2.高效率的取幂运算
求XN。
XN=XN/2 *XN/2 (N为偶数)
XN=X(N-1)/2 *X(N-1)/2 *X (N为奇数)
Pow(int x,int n)
{
if(n==0)
return 1;
if(IsEven(n))//若为偶数
return Pow(x*x,n/2);
else
return POw(x*x,n/2)*x;
}
3.二分查找
在已排序的数中查找某个数。
int BinarySearch(ElementType A[],ElementType x,int n)
{
int low,mid,high;
low=0,high=n-1;
while(low<=high)
{
mid=(low+high)/2;
if(A[mid]>x)//如果查找的数小于中间值,抛弃右边值
high=mid-1;
else if(A[mid]<x)//如果查找的数大于中间值,抛弃左边值
low=mid+1;
else
return mid;
}
return NotFound;
}