【Classic Algorithms】
文章平均质量分 90
JasonDing1354
关注jasonding.top
展开
-
【从零学习经典算法系列】分治与递归1——递归表达式与解法初步
比如足球世界杯,我们要通过世界杯决出世界上最好的一支球队,于是通过各大洲的分区比赛选出几支球队,再在这世界杯的32强决一雌雄。把一个大问题(全球各国家足球队选择水平能力最强的一支)分解成多个类型,相同规模,相对更小的小问题(各个赛区的强队),再分别解决更小的问题(小组赛、淘汰赛的角逐),最终使得一个大问题迎刃而解,这就是分治策略。原创 2014-07-11 09:13:32 · 3643 阅读 · 1 评论 -
【从零学习经典算法系列】分治与递归2——主方法
主方法给出求解形如T(n) = aT(n/b) + f(n)的递归表达式的定理性方法,这里常数a>=1,b>1,f(n)是一个渐进趋正的函数(存在n0,当n>n0,有f(n)>0)。递归式T(n) = aT(n/b) + f(n)描述了将规模为n的问题划分为a个子问题的算法的运行时间,每个子问题规模为n/b,a和b是正整数。a个子问题被分别递归地求解,时间各为T(n/b)。划分原问题和合并答案的代价由函数f(n)描述。原创 2014-07-12 14:23:54 · 5806 阅读 · 0 评论 -
【从零学习经典算法系列】分治策略实例——归并排序(Mergesort)
归并排序是递归算法的一个很好的实例,该算法的基本操作是合并两个已排序的表,因为这两个表是已排序的,所以若将输出放到第三个表中时,该算法可以通过对输入数据一趟排序来完成。算法流程:基本的合并算法是取两个输入数组A和B,一个输出数组C,以及三个计数器Aptr,Bptr,Cptr,它们初始置于对应数组的起始端。A[Aptr]和B[Bptr]中较小者被拷贝到C中的下一个位置,相关的计数器向下个元素推进一步。当两个输入表有一个用完之后,则将另一个表剩余部分拷贝到C中。原创 2014-07-13 17:20:37 · 2632 阅读 · 0 评论 -
【从零学习经典算法系列】分治策略实例——二分查找
二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组 为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn)。原创 2014-07-27 20:52:49 · 4588 阅读 · 0 评论 -
【从零学习经典算法系列】分治策略实例——快速排序(QuickSort)
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要O(nlogn)次比较。在最坏状况下则需要O(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他O(nlogn)算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。此种排序的思路是:如果在分开的时候,不是从中间位置上分界,二是按照元素的大小分开为两个一大一小的子序列(一个子序列的所有元素大于另一个子序列里的所有元素),这样的话,因为两个子序列之间的相对次序已经正确,所有在合并的时候原创 2014-07-31 16:40:00 · 4994 阅读 · 0 评论 -
【leetcode边做边学】从atoi说起
atoi即ASCII to integer,是把字符串转换成整型数的函数。atoi看起来是一道很简单的题目,但是却考察了面试者写代码过程的各方面的能力————对于测试用例全面的考虑、良好编程的习惯、对代码漏洞和鲁棒性的保证。对于技术面试而言,应聘者应该养成在写代码之前考虑所有可能的测试用例的习惯,保持思维逻辑的严谨。原创 2014-09-14 20:34:40 · 1969 阅读 · 0 评论 -
利用ffmpeg和opencv进行视频的解码播放
OpenCV中有自己的用于处理图片和视频的类,可以很方便的读入文件和显示。现在视频数据流是ffmpeg解码h264文件得到的,由于要依赖该数据源进行相应的后续处理,所以需要将ffmpeg中得到的数据缓存转换成可以被OpenCV处理的Mat类对象。原创 2014-11-17 17:18:24 · 17735 阅读 · 2 评论 -
【leetcode边做边学】二分查找应用
二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组 为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn)。原创 2014-09-18 10:40:13 · 2507 阅读 · 1 评论