Algorithms
文章平均质量分 79
heyabo
做正确的事让这个世界变得美好一点
展开
-
动态规划之理论基础(0)
一、基本概念1、定义:动态规划,dynamic programming,是通过组合子问题的解而得到整个问题的解。其中的Programming指的是tabular method,可译为:表格法 --- 填表和查表。2、应用:动态规划通常用于最优化问题,此类问题可能有很多种可行解,每一个解有一个值对应一组选择,即我们要从中作出一组合适的选择以得到一个最优(最大或最小)值的解(最优解也可原创 2013-05-15 16:45:10 · 3024 阅读 · 0 评论 -
三种基于比较的nlgn排序算法 - 归并-堆-快排 - C++实现
引言注:由于没有启用任何公示编辑器,为表示方便:以下涉及时间复杂度表示时,其渐近符号用以下符号代替:本文将介绍三种能在O(nlgn)时间内排序n个数的算法:归并排序、堆排序和快速排序。它们都是基于比较的排序,前两种算法在最坏情况下达到此上界,快速排序在平均情况下达到此上界。注:比较排序指排序结果中,各元素的次序基于输入元素间的比较。且可以证明:任何一个比较排序算法在最坏原创 2013-05-13 19:43:33 · 9342 阅读 · 13 评论 -
三种线性时间O(n)排序算法 - 计数-基数-桶 - C++实现
引言注:由于没有启用任何公式编辑器,为表示方便:以下涉及时间复杂度表示时,其渐近符号用以下符号代替:先来看一个定理:任意一个比较排序算法在最坏情况下,都需要做 $(nlgn)次的比较。其可用决策树模型加以证明,详见:《算法导论》第8章8.1节。该定理指出了比较排序的时间复杂度下界,即没有比较更少的了。故以下介绍的三种算法均不是基于比较的排序算法,其均对输入数据作了某原创 2013-05-13 03:38:45 · 3848 阅读 · 0 评论