![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法笔记
Levyya
这个作者很懒,什么都没留下…
展开
-
快速排序——排序
快速排序: 选定一个用于划分区间的元素(主元),将数组分成两部分,左边值小于或等于主元值,右边值大于主元值。int randPartition(int A[], int left, int right) { int p = (1.0 *rand() / RAND_MAX * (right - left) + left); // #define RAND_MAX 0x7ff...原创 2019-07-19 20:05:40 · 70 阅读 · 0 评论 -
随机选择算法——快排
随机选择算法: 从一组无序的数组中选出第 k 大的数。 利用快速排序中的partition, 每次划分可以得到第p - left + 1大的数 ,等于 k 直接返回;若k < m,说明第 k 大的数在左边,否则在右边。int randPartition(int A[], int left, int right) { int p = (1.0 * r...原创 2019-07-19 20:31:12 · 244 阅读 · 0 评论 -
快速幂——二分
计算 a^b % m:递归算法typedef long long LL;LL binaryPow(LL a, LL b, LL m) { if (b == 0) return 1; if (b % 2 == 1) return a * binaryPow(a, b - 1, m) % m; else { LL t = binary(...原创 2019-07-17 19:39:24 · 130 阅读 · 0 评论 -
归并排序——排序
2-路归并: 将数组划分成2个元素一组,组内排好序后归并为一组,往复几次至一组。递归实现const int maxn = 100;void merge(int A[], int L1, int R1, int L2, int R2) { int i = L1, j = L2; int temp[maxn], index = 0; while (i <= R1 ...原创 2019-07-17 20:41:10 · 63 阅读 · 0 评论