参考书籍:《数据结构与算法分析——C语言描述》
快速排序是在实践中最快的已知排序算法,它的平均时间复杂度O(NlogN)。当然在最坏的情况下为O(N^2),但稍加努力就可以避免这种情形。
像归并排序一样,快速排序也是一种分治的递归算法,可简单表示如下:
将数组S排序的基本算法由下列简单的四步组成。
1、数组元素至少大于或等于4个,否则直接利用插入排序完成。
2、利用特定方法(三数...
分类:
编程语言 时间:
2015-05-09 16:40:30
阅读次数:
129
假设以二维数组g[1..m][1..n]表示一个图像区域,g[i][j]表示该区域中点(i,j)所具颜色,其值为从0到k的整数。试编写递归算法,将点(i0,j0)所在区域的颜色置换为颜色c。约定与(i0,j0)同色的上、下、左、右的邻接点为同色区域的点。表示图像区域的类型定义如下:/* 在g[1.....
分类:
编程语言 时间:
2015-05-08 14:38:27
阅读次数:
188
问题盒分形定义如下:
1度的盒分形为:
X
2度的盒分形为:
X X
X
X X如果B(n-1)表示n-1度的盒分形,则n度的盒分形递归定义如下:B(n-1) B(n-1)
B(n-1)
B(n-1) B(n-1) 请画出n度的盒分形的图形输入每行给出一个不大于7的正整数。输入的最后一行以-1表示输入结束输出对于每个测试用例,出书用’X’标记的盒分...
分类:
编程语言 时间:
2015-05-07 22:06:50
阅读次数:
198
题目1:写一个函数,打印二叉树中某层次的节点(从左到右),其中根节点为第0层。
思路:利用递归算法,思想是:要求访问二叉树中第k层的节点,那么其实就是要访问“以该二叉树根节点的左右子节点为根节点的两颗子树”中层次为k-1的节点
代码:
struct pNode {
int data;
pNode *lChild;
pNode *rChild;
};
int ...
分类:
其他好文 时间:
2015-05-07 14:40:05
阅读次数:
146
中心思想:
设R={r1,r2,…,rn}是要进行排列的n个元素,Ri=R-{ri}.
Perm(X)表示在全排列Perm(X)的每一个排列前加上前缀ri得到的排列。
(1)当n=1时,Perm(R)=(r),其中r是集合R中唯一的元素;
(2)当n>1时,Perm(R)可由(r1)+Perm(R1),(r2)+Perm(R2),…,(rn)+Perm(Rn)构成。
那么具体...
分类:
编程语言 时间:
2015-05-07 00:58:47
阅读次数:
171
快速排序之所以特别快,主要是由于非常精炼和高度优化的内部循环。像归并排序一样,快速排序也是一种分治的递归算法。数组S排序的基本算法由下列简单的四部组成:1.如果S中元素个数是0或1,则返回2.取S中任一元素v,称之为pivot(枢纽元,主元,基准)3.将S-{v}分成两个不想交的集合:S1={x∈S...
分类:
编程语言 时间:
2015-05-04 22:02:28
阅读次数:
141
汉诺塔:(Hanoi)是一种玩具,如图![这里写图片描述] (http://img.blog.csdn.net/20150430225337439)
从左到右 A B C 柱 大盘子在下, 小盘子在上, 借助B柱将所有盘子从A柱移动到C柱, 期间只有一个原则: 大盘子只能在小盘子的下面.
问题理解与描述:
1.问题的理解与描述
问题的形式化表示为:
输入:圆盘数n,3根细杆—...
分类:
编程语言 时间:
2015-05-01 09:27:31
阅读次数:
157
中序遍历二叉树1 递归算法
算法的递归定义是:
若二叉树为空,则遍历结束;否则
⑴ 中序遍历左子树(递归调用本算法);
⑵ 访问根结点;
⑶ 中序遍历右子树(递归调用本算法)。中序遍历的递归算法void InorderTraverse(BTNode *T)
{ if (T==NULL)
return;
InorderTraverse(T->...
分类:
其他好文 时间:
2015-04-30 10:41:25
阅读次数:
192
递归算法设计的基本思想是:对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到可以直接求解,也就是说到了递推的出口,这样原问题就有递推得解。 关键要抓住的是: (1)递归出口 (2)地推逐步向出口逼近 样例: example: 求5的阶乘。。 例如以下: Jav.....
分类:
编程语言 时间:
2015-04-30 10:13:48
阅读次数:
137
递归和迭代的区别 递归: 1)递归就是在过程或函数里面调用自身; 2)在使用递归时,必须有一个明确的递归结束条件,称为递归出口. 迭代: 利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的话,迭代就是A不停的调用B. 1、斐波那契 1 1 2 3 5 8 递归算法 def fibo1(n)...
分类:
其他好文 时间:
2015-04-29 21:25:16
阅读次数:
169