美文网首页
快速过算法设计思想

快速过算法设计思想

作者: 喜悦的狮子 | 来源:发表于2022-06-18 22:50 被阅读0次
  1. 分而治之

算法设计的一种方法。

它将一个问题分成多个和原问题相似的小问题,递归解决小问题,再将结果合并以解决原来的问题。

归并排序

分:把数组从中间一分为二
解:递归地堆两个子数组进行归并排序。
合:合并有序子数组

快速排序

分:选基准,按基准把数组分成两个子数组。
解:递归地堆两个子数组进行快速排序。
和:对两个子数组进行合并。

  1. 动态规划

将一个问题分解为相互重叠的子问题,通过反复求解子问题来解决原来的问题

动态规划和分而治之区别在于,他们的子问题是否是独立,子问题是否会互相干扰。

斐波那契数列

定义子问题 F(n) = F(n-1) + F(n-2)

反复执行:从 2 循环到 n,执行上述公式。

  1. 贪心算法简介

期盼通过每个阶段的局部最优解,从而达到全局的最优解,但结果不一定是最优。

贪心法,又称贪心算法,贪婪算法,在对问题求解时,总是做出在当前看来最好的选择,期望通过每个阶段的局部最优选择达到全局最优,但结果不一定最优

适用场景:简单的说,问题能够分解成子问题来解决,子问题的最优解能递推到最终问题的最优解,就能用贪心算法的到最后的最优解,这种子问题最优解称为最优子结构

贪心算法与动态规划的不同点在于它对每个子问题的解决方案都做出当前的最优选择,不能回退,而动态规划会保留之前的运算结果,并根据之前的结果进行选择,有回退的功能,贪心是动态规划的理想化的情况。

解法: 数组 + 贪心

// 解题思路:

// 贪心:局部最优,见好就收,见差就不懂,不做长远打算
// 新建一个变量用来统计总记录
// 遍历价格数组,如果当前价格比昨天高就在昨天买,今天卖,否则就不交易。
// 返回利润之和
var maxProfit = function(prices) {
    let profit = 0;
    for (let i = 1; i < prices.length; i+=1) {
        if (prices[i] > prices[i - 1]) {
                profit += prices[i] - prices[i-1]
        }
    }
    return profit;
};
  1. 回溯算法

渐进式寻找并构建问题解决方式的策略,回溯算法会先从一个可能的动作开始解决问题,如果不行,就回溯并选择另一个动作,直到将问题解决。

适用场景:

有很多路,这里有死路也有出路吗,通常需要递归来模拟所有的路。

相关文章

  • 快速过算法设计思想

    分而治之 算法设计的一种方法。 它将一个问题分成多个和原问题相似的小问题,递归解决小问题,再将结果合并以解决原来的...

  • 算法设计思想

    算法思想: 枚举:列出所有的点进行处理。-开始前可以先排除不可能的点。 递归:函数调用自身。-每次处理的方式一样,...

  • PHP - 快速排序

    使用PHP代码实现快速排序算法 快速排序是十分常用的高效率的算法,其思想是:先选一个标尺,用它把整个队列过一遍筛选...

  • 快速排序 算法思想

    QUICKSORT(A,p,r) if(p

  • 算法设计思想-回溯算法

    1. 是什么 渐进式寻找并构建问题解决方式的策略。 会先从一个可能的动作开始解决问题,如果不行,就回溯并选择另一个...

  • TsingHuaDSA-排序

    该文章为清华大学数据结构与算法设计MOOC课程读书笔记. 1. 快速排序 1.1 思想 类似于merge sort...

  • 排序算法之快速排序

    排序算法之快速排序 参考自算法(第四版),快速排序 算法思想 对数组中取一个切分元素,下文简称pivot 然后使得...

  • 快速排序

    快速排序思想 快速排序号称20世纪最伟大的十大算法之一,也是nlogn级别的排序算法,它的思想是类似冒泡排序,是一...

  • 排序算法(七)快速排序

    排序算法(七)快速排序 1.算法思路  快速排序(Quick-Sort)是从冒泡排序演变而来及基于分而治之思想的排...

  • 快速排序算法

    快速排序算法是不稳定的排序算法。 快速排序算法是基于分治策略的一个算法。其基本思想是,对于输入的子数组 a[p:r...

网友评论

      本文标题:快速过算法设计思想

      本文链接:https://www.haomeiwen.com/subject/yjplvrtx.html