算法()-其他
算法()
1.快排排序void quick_sort(int q[],int l,int r){if(l>=r)return ;int i=l-1,j=r+1;int x=q[l+r>>1];while(i<j){do i++;while(q[i]<x);do j–;while(q[j]>x);if(i<j)swap(q[i],q[j];}quick_sort(q,l,j);quick_sort(q,j+1,r);}2.归并排序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])temp[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];}3.二分算法(整数)bool check(int x)…..//x满足某种性质void bsearch_1(int l,int r){while(i<j){int mid=l+r+1>>1;if(check(mid))l=mid;r=mid-1;}return l;}void bsearch_2(int l,int r){while(i<j){int mid=l+r>>1;if(check(mid))r=mid;r=mid+1;}return l;}
1.快排排序void quick_sort(int q[],int l,int r){if(l>=r)return ;int i=l-1,j=r+1;int x=q[l+r>>1];while(i<j){do i++;while(q[i]<x);do j–;while(q[j]>x);if(i<j)swap(q[i],q[j];}quick_sort(q,l,j);quick_sort(q,j+1,r);}2.归并排序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])temp[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];}3.二分算法(整数)bool check(int x)…..//x满足某种性质void bsearch_1(int l,int r){while(i<j){int mid=l+r+1>>1;if(check(mid))l=mid;r=mid-1;}return l;}void bsearch_2(int l,int r){while(i<j){int mid=l+r>>1;if(check(mid))r=mid;r=mid+1;}return l;}