一 提议描述:输入正整数n,按照字典序从小到大的顺序输出前n个数的所有排列。二 思路分析:对此问题用递归的思想解决:先输出所有以1开头的排列(递归调用),然后输出以2开头的排列(递归调用),接着以3开头的排列,?,最后才是以n开头的排列。以1开头的排列的特点是:第一位是1,后面是按字典序的2~9的排...
分类:
其他好文 时间:
2014-07-24 17:29:10
阅读次数:
250
非常简单的指令,只需要:wget -c -r -p -k -np [URL]下面解释下个参数的意义:-c 断点续传-r 递归下载,可遍历整个站点的结构-p 网页显示所需要的素材(图片\css\js之类)-k 将下载的网页里的连接转换为本地连接(这个功能很赞)-np 仅下载当前站点的文件(否则你可能会...
分类:
其他好文 时间:
2014-07-24 17:10:55
阅读次数:
266
递归算法大家都不陌生,当需要重复计算相同问题时,一般可以选择递归和循环两种算法。又因为递归实现起来代码比较简洁,所以通常都会使用递归来解决上述问题。比如斐波那契数列,再比如树的前序、中序、后续遍历算法。
递归算法虽然是有代码简洁这个优点,但是其缺点显著。因为递归函数是在执行过程中调用其自身,所以会占用大量的栈上空间,并且压栈和出栈都是有时间消耗的。所以从这一点上来看,递归的效率是不如循环。除...
分类:
其他好文 时间:
2014-07-24 12:24:15
阅读次数:
438
递归算法是不可取的,因为效率很低,而且还有栈溢出的风险。
应该使用如下的迭代解法:
int Fibonacci(unsigned int n)
{
if(n <= 0)
{
return 0;
}
if(n == 1)
{
return 1;
}
int i = 0,j = 1,m;
unsigned int k;
for(k = 2; k <= ...
分类:
其他好文 时间:
2014-07-24 12:24:05
阅读次数:
233
Given n, how many structurally unique BST's (binary search trees) that store values 1...n?
For example,
Given n = 3, there are a total of 5 unique BST's.
1 3 3 2 1
\...
分类:
编程语言 时间:
2014-07-24 11:35:42
阅读次数:
245
方法主体:
{CSDN:CODE:434135}
使用时,请在类中先声明一个Map,参数形式如下:
JSONObject jobj = new JSONObject(JSONContent);
首次请传递jobj。...
分类:
Web程序 时间:
2014-07-24 11:32:22
阅读次数:
173
解: 1.14:空间是O(n)。步聚不好直接求,根据书中的描述,增长的阶是对某种规模所需资源的粗略度量,比如书中描述斐波那契的树形递归计算需要O(pow((1+sqrt(5))/2,n))步,可以把这个树形递归想像成是一个满二叉树...
分类:
其他好文 时间:
2014-07-24 10:57:06
阅读次数:
260
1.1
算法思路——
该算法在数组中选定一个元素作为主元(一般选第一个),然后以这个主元为参考对象将数组分为两个部分,第一部分都是小于或者等于主元,第二部分都是大于或者等于主元。然后对第一和第二部分递归地使用快速排序算法,直到分到最小的小组为止。
1.2
时间复杂度——
在最差的情况下,要把n个元素的数组划分,需要n次比较和n次移动。假设用T(n)
来表示使用快速排序算法来排序n个元素...
分类:
其他好文 时间:
2014-07-24 10:36:04
阅读次数:
259
本文介绍从无序数组中选择最大值和最小值的最优算法。进而介绍采用快速排序思想的 RANDOMIZED-SELECT 选择算法来查找给定位置 i 的值,或获取中位数(median)。快速排序会递归地处理划分的两边,而 RANDOMIZED-SELECT 则只处理一边。所以快速排序的期望运行时间是 Θ(n...
分类:
其他好文 时间:
2014-07-24 04:58:28
阅读次数:
355
看到一个非递归交换一个二叉树的左右孩子的位置,于是想实现之,才发现非递归的先中后序遍历都忘记了……于是杂七杂八的写了一些,抄抄资料就实现了,然后实现非递归交换两个孩子的位置还是相当容易的。
分类:
其他好文 时间:
2014-07-23 18:04:35
阅读次数:
292