1.最大公约数(GCD)
求 和
的最大公约数
int gcd(int x,int y)
{
return y?gcd(x,y%x):x;
}
2.快速幂
求 的值,基本思想是
int QuickPow(int a,int b)
{
int res=1,base=a,b2=b;
while(b2){
if(b2&1) res *= base;
base *=base;
b2 >>= 1;
}
return res;
}
快速幂的时间复杂度为。
3.快排
对数组arr的第left到第right之间的元素快速排序
void swap(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
int partition(int *arr,int left,int right)
{
int i,j;
int key;
i=left;j=right;key=arr[left];
while(i!=j){
while(i<j&&arr[j]>=key) --j;
swap(&arr[i],&arr[j]);
while(i<j&&arr[i]<=key) ++i;
swap(&arr[i],&arr[j]);
}
return i;
}
void QuickSort(int *arr,int left,int right)
{
int v;
if(left<right){
v=partition(arr,left,right);
QuickSort(arr,left,v-1);
QuickSort(arr,v+1,right);
}
}
(未完待续)