基础算法模板
快速排序
void quick_sort(int q[],int L,int R)
{
if(L>=R)
return;
int i=L-1;
int j=R+1;
int x = q[L+R>>1];
while(i<j)
{
while(q[++i]<x);
while(q[--j]>x);
if(i<j)
swap(q[i],q[j]);
}
quick_sort(q,L,j);
quick_sort(q,j+1,R);
}
归并排序
void merge_sort(int q[], int L, int R)
{
if (L >= R) return;
int mid = L + R >> 1;
merge_sort(q, l, mid);
merge_sort(q, mid + 1, r);
int k = 0, i = L, j = mid + 1;
while (i <= mid && j <= R)
if (q[i] <= q[j])
tmp[k ++ ] = q[i ++ ];
else
tmp[k ++ ] = q[j ++ ];
while (i <= mid)
tmp[k ++ ] = q[i ++ ];
while (j <= R)
tmp[k ++ ] = q[j ++ ];
for (i = L, j = 0; i <= R; i ++, j ++ ) q[i] = tmp[j];
}
二分查找
int bsearch(int L, int R)
{
while (L < R)
{
int mid = L + R >> 1;
if (check(mid))
R = mid;
else
L = mid + 1;
}
return l;
}