算法
文章平均质量分 57
久未
这个作者很懒,什么都没留下…
展开
-
求数组中逆序对——分治算法
求数组中逆序对——分治算法 问题描述 见算法导论第三版5.2-5. 题目分析 该问题可以借助快速排序的主代码,在左右两侧子数组排序、子数组合并的过程中加入逆序对个数计算的过程。 基本过程如下: 1、如果数组计算区域仅包含一个元素,返回0; 2、否则,将数组分为左右两段[left,mid)与[mid,right),对两个子数组进行排序,并计算左侧逆序对数目a和右侧逆序对数目b; 3、合并:计算横跨左右的逆序对数目c(该过程技巧位于while循环处:如果左侧数组元素array[ptrL]值大于右侧元素arr原创 2022-04-14 17:23:46 · 615 阅读 · 0 评论 -
最大子数组问题——暴力、分治、线性算法
分治算法 问题描述 给定数组A,求出下标i 和 j,s.t. ∑k=ijAk\sum_{k=i}^j A_k∑k=ijAk最大。 思路 对于A[left,right],其中位元素下标如下: mid = left +(right-left)/2 其区间求和最大子数组的两侧i,j可分为三种情况: left⩽\leqslant⩽i⩽\leqslant⩽j⩽\leqslant⩽mid,即完全位于左侧半个数组中 mid<i⩽\leqslant⩽j⩽\leqslant⩽right,即完全位于右侧半个数组中原创 2022-04-06 18:34:54 · 268 阅读 · 0 评论