![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分治
文章平均质量分 76
ygqwan
这个作者很懒,什么都没留下…
展开
-
二分查找
#include #include #include #include using namespace std;const int MAX =110;int yao[MAX];int erfen1(int left,int right,int x) //二分递归实现 { if(left>right) return -1; int middle=(left+right)/原创 2013-03-16 02:25:45 · 827 阅读 · 0 评论 -
快速排序 + 前k小数
找到一个中间的数字9;现在做的就是使左边所有的数字不大于9,右边所有的数字都不小于9 1. 那么在左边找到第一个比9大的数字,把他取出来并放到托管所1里面(意味着取数的地方留下了一个坑,这样比较形象),然后在右边找到第一个比9小的数字,把他放到托管所2里面(意味着取数的地方留下了一个坑);2. 将托管所里面的两个数字交换,这样就达到了左边的那个坑的数字比9(标准)小,右边那原创 2012-11-26 15:54:16 · 933 阅读 · 0 评论 -
用快速排序找中位数
这个很好理解, 就像找前K个数一样, 这个就像找前n/2个数, 不过这里说只是要中位数就没有必要找完了, 于是就可以大规模的剪枝;剪枝方法就是递归的时候对不可能有中位数的区间就直接减掉, 这个可是很大的一个剪枝, 效率急速上升#include #include #include using namespace std;const int mmax = 10000001;int a[原创 2013-12-20 10:39:03 · 8797 阅读 · 3 评论