算法
文章平均质量分 72
Far__cloud
这个作者很懒,什么都没留下…
展开
-
插入排序的递归算法(升序)
近来看算法导论有一习题是关于插入排序的,要求用递归实现。正好理解一下递归,在此分享下我的理解,如有纰漏,请多多指教。 已知一无序数组A[1......N],利用插入排序的方法可以将这个数组分为两部分,已排好序的A'[1.....N-1],再把剩下的第N个数插入到A'中去即可。最开始A'为空数组,现在对其递归排序。在此之前我们要先写个子函数,目的是把剩下的第N个元素插入到A'中去。原创 2016-04-14 18:24:22 · 1823 阅读 · 0 评论 -
归并排序
归并排序是一种效率很高的排序算法,其时间复杂度为θ(nlgn),下面是我学习这一算法的理解。 归并排序运用了分治策略,即把原问题分解成若干类似原问题的子问题,然后对这些子问题进行再分解,直到子问题容易求得解为止,最后将所有子问题的解合并起来构成原问题的解。 对于归并排序来说就是将原来要排序的序列A[n](假设该序列用含有n个元素的数组表示)分解成两个子数组,然后对这两个子数组递归求解,最后原创 2016-05-01 12:08:31 · 380 阅读 · 0 评论 -
线性时间内求最大子数组和
给定KK个整数组成的序列{ N_1N1, N_2N2, ..., N_KNK },“连续子列”被定义为{ N_iNi, N_{i+1}Ni+1, ..., N_jNj },其中 1 \le i \le j \le K1≤i≤j≤K。 “最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -原创 2016-05-08 19:24:52 · 1068 阅读 · 1 评论 -
二叉树的三种非递归遍历
二叉树有三种遍历方法,分别是前序遍历,中序遍历和后序遍历,下面分享下前两种方法的非递归形式。 由于二叉树的这三种遍历过程非常适合堆栈的结构特点,即"先进后出",所以采用堆栈的结构。在沿左子树深入时,进入一个结点就将其压入堆栈。若是先序遍历,则在入栈之前访问之;当沿左分支深入不下去时,则返回,即从堆栈里弹出前面压入的结点;若为中序遍历,则此时访问该结点,然后从该结点的右子树继续深入;原创 2016-08-09 11:12:11 · 457 阅读 · 0 评论