04 2013 档案

摘要:最近看了一些递归的例子,发现调用递归之前的语句和递归之后的语句执行顺序是正好相反的,这是给我的最大感受,具体看如下例子/*递归例子*/#include<stdio.h>void up_and_down(int);int main(void){ up_and_down(1); return 0;}void up_and_down(int n){printf("Level %d:n location %p\n",n,&n); /* 1 */if(n<4)up_and_down(n+1);printf("Level %d:n location 阅读全文
posted @ 2013-04-23 17:47 l_k_y 阅读(123) 评论(0) 推荐(0)
摘要:归并排序:是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。排序基本思想是: 将序列每相邻两个数字进行归并操作(merge),形成floor(n/2)个序列,排序后每个序列包含两个元素,将上述序列再次归并,形成floor(n/4)个序列,每个序列包含四个元素,重复步骤2,直到所有元素排序完毕 速度仅次于快速排序,为稳定排序算法,一般用于对总体无序,但是各子项相对有序的数列归并排序比堆排序稍微快一点,但是需要比堆排序多一倍的内存空间,因为它需要一个额外的数组稳定 时间复杂度O(nlogn) n大时较好 Ja... 阅读全文
posted @ 2013-04-23 13:40 l_k_y 阅读(153) 评论(0) 推荐(0)
摘要:(转)c++C++数据结构二叉树的非递归遍历二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。一.前序遍历前序遍历按照“根结点-左孩子-右孩子”的顺序进行访问。1.递归实现void preOrder1(BinTree *root) //递归前序遍历 { if(root!=NULL 阅读全文
posted @ 2013-04-12 00:54 l_k_y 阅读(166) 评论(0) 推荐(0)
摘要:对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章(实在不清楚为什么Coding Horror也被墙)通过 文氏图Venn diagrams解释了SQL的Join。我觉得清楚易懂,转过来。假设我们有两张表。Table A是左边的表。Table B是右边的表。其各有四条记录,其中有两条记录是相同的,如下所示:id name id name-- ---- -- ----1 Pirate ... 阅读全文
posted @ 2013-04-05 00:43 l_k_y 阅读(275) 评论(0) 推荐(0)