算法
littlenoob
这个家伙很懒,什么也没说
展开
-
归并排序模板(分治思想)
void merge(vector<int>& v, vector<int>& t, int ll, int rr) { if(rr - ll <= 1) return; int mid = ll + (rr - ll) / 2; merge(v, t, ll, mid); merge(v, t, mid, rr); int p = ll, q = mid, s = ll; while(s &原创 2020-11-02 19:47:49 · 140 阅读 · 0 评论 -
快排模板(分治思想)
简单总结一下快排算法。快排主要分为两个阶段,第一个阶段为划分,第二个阶段为在划分的基础上再次进行划分。先说一下划分,何为划分,首先要确定一个基准,这里可以理解为先找一个数作为基准(默认是增序,反之亦然),然后将小于它的数全放到它的左边,将大于它的数放到它的右边,这样通过一次划分就确定了这个数的最终位置。接下来就很简单了,只要根据分治的思想,分别对左右两个部分进行划分即可。 快排只用了常数级别的辅助空间,故空间复杂度为O(1)O(1)O(1),平均时间复杂度为O(nlogn)O(nlogn)O(nlo原创 2020-11-02 19:36:07 · 398 阅读 · 0 评论