title: 快速排序法(quick sort) tags: 分治法(divide and conquer method) grammar_cjkRuby: true 算法原理 分治法的基本思想 :将原问题分解为若干个更小的与原问题相似的问题,然后递归解决各个子问题,最后再将各个子问题的解组合成原问 ...
分类:
编程语言 时间:
2017-11-14 23:24:16
阅读次数:
260
快速排序是一种基于分治技术的重要排序算法,顺便提一下什么是分治:分治法是按照以下方案工作:1.将一个问题划分为同一类型的若干子问题,子问题规模相同或相近2.对这些子问题进行求解(一般使用递归方法)3.最后合并子问题的解,得到原问题的答案知道了什么是分治法,就很好..
分类:
编程语言 时间:
2017-11-11 00:35:24
阅读次数:
247
基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 分而治之 可以看到 ...
分类:
编程语言 时间:
2017-11-08 00:52:51
阅读次数:
310
算法:一个计算过程,解决问题的方法。算法是独立存在的一种解决问题的方法和思想。 算法的五大特性 时间复杂度是用来估计算法运行时间的一个式子(单位)。 时间复杂度:假设存在函数g,使得算法A处理规模为n的问题示例所用时间为T(n)=O(g(n)),则称O(g(n))为算法A的渐近时间复杂度,简称时间复 ...
分类:
编程语言 时间:
2017-11-06 19:00:38
阅读次数:
168
在算法分析中,主定理(英语:master theorem)提供了用 渐近符号 表示许多由 分治法 得到的递推关系式的方法。 此方法经由经典算法教科书《算法导论》而为人熟知。不过,并非所有递推关系式都可应用主定理。该定理的推广形式包括Akra-Bazzi定理。 内容 假设有递推关系式 , 其中为 问题 ...
分类:
其他好文 时间:
2017-11-05 12:20:12
阅读次数:
143
在公茂果老师的课件中,给出了三种矩阵相乘的方法: 1. 利用矩阵定义,对矩阵进行运算。即C(i,j)=A(i,k)*B(k,j),时间复杂度为: 每一个元素需时间n C矩阵共有n2个元素 因此,总的时间复杂度为n3 其实现代码为: 2.利用分治法进行计算。分治法的核心,在于将原问题切割,这里将原矩阵 ...
分类:
其他好文 时间:
2017-11-04 14:51:59
阅读次数:
153
1、矩阵相乘的朴素算法 T(n) = Θ(n3) 朴素矩阵相乘算法,思想明了,编程实现简单。时间复杂度是Θ(n^3)。伪码如下 2、矩阵相乘的strassen算法 T(n)=Θ(nlog7) =Θ (n2.81) 矩阵乘法中采用分治法,第一感觉上应该能够有效的提高算法的效率。如下图所示分治法方案,以 ...
分类:
其他好文 时间:
2017-10-24 20:54:42
阅读次数:
188
思路 快速的基本思路是每次都选取一个基准,然后将大于该基准的元素放在右边,小的放在左边。然后利用分治法,对基准的左区间和右区间进行下一轮的快排,直到每个区间只剩一个元素,终止递归。 关键点 本算法的关键点就是在选取一个基准后,将所有元素分成两个子区间。利用挖坑填补的生活原理,我们以当前区间为例,一般 ...
分类:
编程语言 时间:
2017-10-24 14:13:20
阅读次数:
227
Given a binary tree, find the maximum path sum from root. The path may end at any node in the tree and contain at least one node in it. Example Given ...
分类:
其他好文 时间:
2017-10-16 09:40:35
阅读次数:
129