
算法
sealir
数据和特征决定了机器学习算法的上限,而模型和算法只是不断逼近这个上限而已
展开
-
五大常用算法之一:分治算法
一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计算时间都与其规...转载 2018-12-04 21:52:57 · 335 阅读 · 0 评论 -
排序算法:希尔排序
一、前言 希尔(Shell)排序又称为缩小增量排序,它是一种插入排序。它是直接插入排序算法的一种威力加强版。 希尔排序,也称递减增量排序算法,以其设计者希尔(Donald Shell)的名字命名,该算法由 1959 年公布。二、算法思想 我们举个例子来描述算法流程(以下摘自维基百科): 假设有这样一组数 {13, 14, 94, 33, 82, 25, 59, ...转载 2018-12-11 22:13:22 · 253 阅读 · 0 评论 -
排序算法:归并排序
一、前言 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用 分治法(Divide and Conquer) 的一个非常典型的应用。二、算法思想 该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 动态效果...转载 2018-12-17 22:27:42 · 274 阅读 · 1 评论 -
排序算法:堆排序
一、前言 堆排序是一种选择排序。 选择排序:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。二、算法思想 堆排序是利用堆的性质进行的一种选择排序。 动态效果示意图: 堆是一棵顺序存储的完全二叉树。 (1)其中每个结点的关键字都不大于其孩子结点的关键字,这样的堆称为小根堆。 ...转载 2018-12-16 21:30:20 · 603 阅读 · 1 评论 -
排序算法:直接插入排序
一、前言 直接插入排序(Insertion Sort)序是一种最简单的插入排序。为简化问题,我们下面只讨论升序排序。二、算法思想 插入排序:每一趟将一个待排序的记录,按照其关键字的大小插入到有序队列的合适位置里,知道全部插入完成。 动态效果示意图: 以上的过程,其实就是典型的直接插入排序,每次将一个新数据插入到有序队列中的合适位置里。 很简单吧...转载 2018-12-10 20:41:00 · 378 阅读 · 0 评论 -
排序算法:冒泡排序
一、前言 冒泡排序是一种交换排序。 什么是交换排序呢? 答曰:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。二、算法思想 它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为越小的元素会经由...转载 2018-12-09 22:08:07 · 298 阅读 · 0 评论 -
五大常用算法之三:贪心算法
一、基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。 所以对所采...转载 2018-12-06 21:47:06 · 370 阅读 · 0 评论 -
排序算法:简单选择排序
一、前言 简单选择排序是一种选择排序。 选择排序:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。二、算法思想 简单排序很简单,它的大致处理流程为: 从待排序序列中,找到关键字最小的元素; 如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换; 从余下的 N - 1 个元素中,找出关键字最小的...转载 2018-12-13 20:39:09 · 968 阅读 · 0 评论 -
排序算法:快速排序
一、前言 快速排序是一种交换排序,它由C. A. R. Hoare在1962年提出。二、算法思想 快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都是比它大的数。 然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 动态效果示意图: 详细的图解往往比大...转载 2018-12-12 20:41:54 · 337 阅读 · 0 评论 -
五大常用算法之二:动态规划算法
一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决...转载 2018-12-05 21:00:54 · 313 阅读 · 0 评论 -
排序算法:基数排序
一、前言 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。二、算法思想 基本思想:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数...转载 2018-12-18 20:55:33 · 436 阅读 · 0 评论