算法入门
汝熊
这个作者很懒,什么都没留下…
展开
-
算法入门之二分
一般看到给的是数组然后排列的顺序也有序的时候可以想想二分。 在二分中,分为整数二分和实数二分。其中整数二分比较麻烦,实数二分相对比较简单。 其中需要注意二分的实质不是单调,有单调性可以使用二分,没有单调性也可二分。 1.mid=(l+r)>>1; 具体代码:bool check(int x) { 其中需要验证的性质。 } 2.int bsearch_1(int l,int r) { while(l<r) { int mid=(l+r)/2; if(check(mi原创 2022-03-31 22:52:42 · 54 阅读 · 0 评论 -
算法入门之归并排序
归并排序的主要思想也是分治与双指针,但是此处与快速排序算法不同点就是,多申请了一个数组,用来插入使用。 先给出代码模板 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; while(i<=mid&&j<=r)原创 2022-03-30 22:53:59 · 269 阅读 · 0 评论 -
算法入门之快速排序算法
快速排序算法是笔者开始学习的第一个算法 其主要的思想在于分治,在使用该算法的过程中,要特别注意边界情况。 先给出模板: void quick_sort(int a[],int l,int r) { if(l>=r)return; int i=l-1,j=r+1,x=a[l+r>>1]; while(i<j) { do i++;while(a[i]<=x); do j--;while(a[j]>x); if(i<j) } } ...原创 2022-03-29 22:27:58 · 472 阅读 · 0 评论