经典算法
Breaker-93
你看!代码在我的掌中跳舞~
展开
-
基础贪心算法
基于分治算法,核心:“分解的子问题,局部最优产生全局最优。”本文参考3W学习方法来叙述内容。一、What1、什么是贪心算法?所谓“贪心“,指期望分解后的每个子问题都求到最优解,最后可合成原问题的一个解。2、什么是贪心选择性质一个问题的整体最优解可通过一系列局部的最优解的选择达到,并且每次的选择可以依赖以前作出的选择,但不依赖于后面要作出的选择。这就是贪心选择性质。3、什么是最优子结构性质当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。二、Why1、为什么需要掌握.原创 2021-12-10 15:35:14 · 652 阅读 · 0 评论 -
动态规划算法
与分治算法相似的算法,核心:“分解的子问题,不独立、有重叠、有阶段性。”本文参考3W学习方法来叙述内容。一、What1、什么是动态规划算法?动态规划是将原问题分解为多个子问题,通过计算出子问题的结果构造一个最优解。动态规划通过迭代法自底向上求解,动态规划将分解后的子问题理解为相互间有联系,有重叠的部分;2、动态规划算法与分治算法的比较?相似点:都分解为子问题不同点:分治算法的子问题相互独立,而动态规划算法中的子问题间有联系、有重叠部分(需要避免重复求解子问题)二、Why1、为什么需.原创 2021-12-10 15:29:38 · 182 阅读 · 0 评论 -
基础分治算法
基础算法,核心:“相同子问题分解,分而治之”本文参考3W学习方法来叙述内容。一、What1、什么是分治算法?分治算法是将大规模的复杂问题,分解为相同类型的、小规模的子问题,逐一解决。二、Why1、为什么需要掌握分治算法?分治算法,是计算机科学中重要且基础的算法,很多高效算法基于此。三、How1、实现步骤(1)判断原问题如何分解为相同类型的子问题(2)解决小规模的子问题(3)将子问题的解合并为原问题的解2、适用场景2.1 快速排序2.2 二分搜索...原创 2021-12-06 18:00:26 · 62 阅读 · 0 评论 -
希尔排序算法
基于直接插入排序算法升级改进的一种算法,非稳定排序算法。核心:“增量分组,缩小增量再分,每组插入排序”本文参考3W学习方法来叙述内容。一、What1、什么是希尔排序算法?希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的元素越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。 --引自《百度百科》2、希尔排序与直接.原创 2021-10-13 10:30:01 · 42 阅读 · 0 评论 -
插入排序算法
简单易理解、稳定排序算法,核心:“摸牌遍历,末位插入”。本文参考3W学习方法来叙述内容。一、What1、什么是插入排序?插入排序(Insertion Sort),也被称为直接插入排序,将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。–引自《百度百科》二、Why1、为什么需要掌握插入排序?应对如下排序场景:已经有部分数据已经排好,并且排好的.原创 2021-09-03 11:49:48 · 42 阅读 · 0 评论 -
经典递归算法
代替循环的算法,核心:“层层递进,层层回归,复杂问题子类分解。”本文参考3W学习方法来叙述内容。一、What1、什么是递归算法?在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。–引自《百度百科》2、递归与循环的比较?相似点:都用来做重复任务不同点:递归有去有回,循环有去无回递归算法对问题的描述更清晰,但多次调用函数会增大性能开销。循环虽然比递归效率高,但描述问题不够清晰。以两者的使用需要根据适宜的场景灵活选择。二、Why1、为什么需要掌握递归算法?有人.原创 2021-09-02 14:26:53 · 268 阅读 · 0 评论 -
选择排序算法
简单直观、不稳定排序算法,核心:“重复遍历,最小交换”。本文参考3W学习方法来叙述内容。一、What1、什么是选择排序?选择排序(Select Sort),第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。。–引自《百度百科》二、Why1、为什么需要掌握选择排序?选择排序比较直观,符合人为排序习惯,每次选出一个最小(的)然后依次排列,最常.原创 2021-08-18 17:46:49 · 144 阅读 · 0 评论 -
冒泡排序算法
简单稳定排序算法,核心:“重复遍历,相邻交换”本文参考3W学习方法来叙述内容。一、What1、什么是冒泡排序?冒泡排序(Bubble Sort),它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。–引自《百度百科》2、冒泡排序名称的由来?这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧.原创 2021-08-10 15:13:13 · 187 阅读 · 0 评论