![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法导论
ParadiseHeaven
Learn to Think && Ask
展开
-
最大子数组问题
最大子数组问题(Maximum Subarray) 最大子数组:和最大的连续非空子数组 暴力 遍历,i从0到n-1,每次计算从i往后的部分的最大子数组,然后求解整个数组的最大子数组 int solve(int *arr, int len){ int maxsum = 0; for (int i = 0; i<len; i++){ int cursum = 0; //向后累加 ...原创 2019-01-11 19:53:25 · 345 阅读 · 0 评论 -
快排
快排 分治: 分解:将数组A[p,r]划分成两个(可能为空)的子数组A[p,q-1]和A[q+1,r],使得A[p,q-1] 中的每一个元素都小于等于A[q],A[q]也小于等于A[p+1,r]中的每个元素 解决:递归调用快排,对两个子数组进行排序 合并:因为是基于地址的排序,所以不需要进行合并操作,原数组已经有序 在partition中进行一次划分,实现对子数组A[p,r]的重排 选取基准元...原创 2019-01-12 10:59:54 · 313 阅读 · 0 评论 -
归并排序
归并排序 分治(递归) 非递归 分治 分解:将待排序的数组分解为两个规模大小大致相同的两个子数组 解决:分别对两个子数组进行排序 合并:将排好序的两个子数组进行合并 首先选取数组的中间位置,将数组划分成左右两部分,递归的对左右两个数组进行排序,最后将排好序的两个数组合并即可。 左子数组的从l到mid,有子数组从mid+1到r(两个的范围不要重叠) 当子数组规模为1时,则表示子数组已经排好序,则...原创 2019-01-12 11:38:56 · 258 阅读 · 0 评论 -
选择问题--模拟快排
选择问题 给定n个元素和一个整数k(1 <= k <= n),找出这n个元素中的第k小的元素 可以对元素进行一次排序,然后遍历一遍便可以找到第k小的元素。时间复杂度为O(nlgn)。 此处模拟快排,借助快排的思想,对数组递归的进行划分,与快排不同的是:只对划分出的子数组之一进行递归处理 将数组A[p,r]划分成A[p,q]和A[q+1,r],是的A[p,q]中的每个元素都不大于A[...原创 2019-01-12 14:29:08 · 313 阅读 · 0 评论 -
逆序对--模拟归并排序
逆序对 逆序数的定义:如果 i < j 且A[i] > A[j].则A[i]和A[j]即为逆序数对 给一列数<a[1],a[2],…,a[n]>,求它的逆序对数,即有多少个有序对(i.j),使得i<j且a[i]<a[j] 在归并排序的基础上记上了一个逆序对个数的统计 ans += (mid - i + 1) void Merge(原创 2019-01-12 14:55:55 · 157 阅读 · 0 评论 -
动态规划理解(算法导论)
动态规划 动态规划(DP)算法通常用来求解最优化问题 DP与分治相似,都是通过组合子问题的解来求解原问题。但DP应用于子问题重叠的情况,即不同的子问题拥有共同的子子问题。在这种情况下,分治算法会做很多不必要的工作,它会反复求解那些公共子子问题。而DP对每个子子问题之求解一次,将其解保存在一个表格中,从而无需每次求解一个子子问题是都重新计算,避免了这种不必要的计算。 动态规划算法的步骤: 刻画一个...原创 2019-01-12 20:20:47 · 376 阅读 · 0 评论 -
钢条切割问题 DP
钢条切割问题 给定一段长度为n的钢条和一个价格表pi(i=1,2,…,n),求切割钢条方案,是的销售收益rn最大。 方法一: 长度为n的钢条共有2n-1种不同的切割方案,因为在距离钢条左端i(i=1, 2, …, n-1)处,我们总是可以选择切割或者不切割。 一般的,钢条切割收益可以如下表示: rn = max(pn, r1 + rn-1, r2 + rn-2, …, rn-1 + r1) 第一个...原创 2019-01-13 10:46:27 · 1045 阅读 · 0 评论 -
什么是P问题、NP问题和NPC问题
你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题,NPC问题才是。好,行了,基本上这个误解已经被澄清了。下面的内容都是在讲什么是P问题,什么是NP问题,什么是NPC问题,你如果不是很感兴趣就可以不看了。接...转载 2019-01-15 10:46:21 · 225 阅读 · 0 评论