![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分治算法
icehomegre
我的博客更新啦!详见文章【博客更新】
展开
-
【备忘录】归并排序
没错这是一个备忘录归并排序思路:分治,将两个有序的序列合并成一个有序的序列例如:|1 7 4 2 5 6|拆分成:|1 7 4|2 5 6|拆分成:|1|7 4|2|5 6|第一轮排序:|1|4 7|2|5 6|第二轮排序:|1 4 7|2 5 6|第三轮排序:|1 2 4 5 6 7|形象地说,这种排序会把一个序列均分成两个序列,然后让这两个序列继续递归,直到区间内只有一个数。接着返回途中顺便比较排序。因为两个序列是有序的有序的有序的,所以一次比较时间为O(n)O(n)O(n原创 2021-01-17 18:40:28 · 164 阅读 · 0 评论 -
【备忘录】快速幂
这个算法是针对求a的b次方%p的加速算法。当我们要求a的b次方时,一般情况会使用pow或者自己循环一个一个乘,但是当b特别大,像是194532681等的大数字,并且需要对p取模时,第一种会爆,第二种会超时。这怎么办呢?小小铺垫——搞式子我们先看几个例子:22×23=22+345×47=412我们发现,当ab1与bb2相乘时,答案就为 ab1+b2。接着,我们考虑怎么优化循环乘的算...原创 2020-04-26 15:26:29 · 154 阅读 · 0 评论 -
【分治算法】快速排序(c++)
这是主要代码(函数名不怎么好听)用法(假如有n个数):qw(1,n)void qw(int l,int r){ int i=l,j=r; int mid=a[rand()%(r-l)+l]; while(i<=j) { while(a[i]<mid/*a[i]>mid*/)i++; while(a[j]>mid/*a[j]<mid*/)j--;...原创 2019-08-13 18:56:23 · 537 阅读 · 0 评论