有些人说 归并排序的递归版本实用性差 可读性强非递归版本恰好相反我觉得 也没那么明显差距吧....其实非递归版本也不难理解的假如 我们需要进行排序的数组的长度为 len 每次的子排序数组区间为size那么我们首先将它拆成 len个size为1的小区间 然后2个相邻的进行合并merge排序 这时候 你...
分类:
其他好文 时间:
2014-08-27 20:27:18
阅读次数:
346
午睡醒敲到3点钟,搞了一个多小时。应该是一种非递归的方法吧。例如,4个括号的情况,可以看成是:3个括号的情况 连接上 1个括号的情况+2个括号的情况 连接上 2个括号的情况+1个括号的情况 连接上 3个括号的情况 + ‘(’ 连接上3个括号的情况连接上‘)’;只是这样会每次产生重复的项,要先去掉,才...
分类:
编程语言 时间:
2014-08-27 16:27:27
阅读次数:
336
1 // 树结点定义2 typedef struct TNode3 {4 int value;5 TNode *left;6 TNode *right;7 }*PTNode;1. 前序遍历的非递归实现(借鉴递归思想实现)思想:访问到一结点时,先将其入栈,假设入栈节点为P。访问...
分类:
其他好文 时间:
2014-08-25 19:06:54
阅读次数:
212
前一段时间总结了全排列问题的几种递归解法,今天再总结一下如何通过对系统栈行为的模拟来非递归的实现全排列问题。 我们用一个数组stack[]来表示一个栈,用一个top指针来表示栈顶,用一个flags[]数组来标示每一个数字的可用性;用i来表示当前的状态。 初始状态top=0;i=-1;f...
分类:
其他好文 时间:
2014-08-21 22:31:37
阅读次数:
206
快速排序分析:
最优时间复杂度:O(nlog2n) 在乱序情况下
最坏时间复杂度:O(n^2) 在顺序情况下
平均时间复杂度:O(nlog2n)
空间复杂度:O(n)
稳定性:不稳定
快速排序C语言 递归与非递归实现...
分类:
其他好文 时间:
2014-08-21 21:12:44
阅读次数:
213
1、算法思想
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。
(1) 分治法的基本思想
分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。
(2)快速排序的...
分类:
其他好文 时间:
2014-08-21 09:52:02
阅读次数:
267
1 什么是全排列:例如给出字符串abc: 其全排列为:abc bca cba acb bac cab; 对于acc则全排列为 acc cac cca
2 下面看一下非递归的实现方法:以1234 为例从右向左找相邻递增(严格递增)的数对: 34 满足条件,把3记为一个交换点。 在从右向左找第一个大于第一个交换点的数为4作为第二个交换点,交换后得:1243;然后把第一个交换点后的序列逆序。...
分类:
其他好文 时间:
2014-08-19 16:42:24
阅读次数:
265
观摩了下传说中的的FFT(快速傅里叶)大致就是用递归,和非递归两种方法实现。赶脚fft算法比较适合在fpga里面跑个流水线。感觉应该比CPU&&dsp&&gpu强多了……用MATLAB验证计算结果。
分类:
其他好文 时间:
2014-08-19 12:39:45
阅读次数:
128
1 /* 2 * 二叉树 3 * 4 * (将完全二叉树的数组形式改为链表形式) 5 * 6 * 1 7 * 2 3 8 * ...
分类:
其他好文 时间:
2014-08-17 11:39:16
阅读次数:
345
#include #include using namespace std;#define MAX 100 //字符串最大长度typedef struct Node //二叉树结点{ char data; Node *lchild,*rchild;} *B...
分类:
其他好文 时间:
2014-08-16 22:23:51
阅读次数:
266