一. 算法描述 自底向上的归并排序:归并排序主要是完成将若干个有序子序列合并成一个完整的有序子序列;自底向上的排序是归并排序的一种实现方式,将一个无序的N长数组切个成N个有序子序列,然后再两两合并,然后再将合并后的N/2(或者N/2 + 1)个子序列继续进行两两合并,以此类推得到一个完整的有序数组....
分类:
其他好文 时间:
2014-06-19 08:45:22
阅读次数:
259
动态规划的算法:#includeint MaxSubsequenceSum(const int A[],int n){ int i,sum,MaxSum; sum=MaxSum=0; for(i=0;iMaxSum) MaxSum=sum; if...
分类:
其他好文 时间:
2014-06-18 17:56:31
阅读次数:
139
#includeint MinSubsequenceSum(const int A[],int n){ int i,sum,MinSum; sum=MinSum=0; for(i=0;i0) sum=0; } return MinSum;}void...
分类:
其他好文 时间:
2014-06-18 17:45:48
阅读次数:
173
LCS(A,B,C)!=LCS(A,LCS(B,C))反例:abcdabcdeabcedLCS(B,C)求出来可能是abce或者abcddp[i][j][k]表示A[0...i],B[0...j],C[0...k]的LCS转移方程:if (a[i]==b[j]&&b[j]==c[k]) ...
分类:
其他好文 时间:
2014-06-18 16:10:28
阅读次数:
195
排序思想:每次排序区间的第一个元素作为基准,把此区间内比基准大的元素放在基准右边,比基准小的元素放在基准左边。
性能分析:从空间复杂度方面,快速排序是递归的,每层递归调用时的指针和参数均要用栈来存放,递归调用次数与二叉树的深度一致。因此,在理想情况下,及每一趟排序都将记录序列均匀的分隔成长度接近的两个子序列,则需要栈空间为O(logn);在最坏情况下,即每趟排序之后,基准元素位置均偏向子序列的一...
分类:
其他好文 时间:
2014-06-17 21:55:05
阅读次数:
201
一: 作用 最长公共子序列的问题常用于解决字符串的相似度,是一个非常实用的算法,作为码农,此算法是我们的必备基本功。二:概念 举个例子,cnblogs这个字符串中子序列有多少个呢?很显然有27个,比如其中的cb,cgs等等都是其子序列,我们可以看出子序列不见得一定是连续的,连续的那是子串。 ...
分类:
其他好文 时间:
2014-06-17 00:37:40
阅读次数:
258
最长公共子序列是一个很经典的动态规划问题,最近正在学习动态规划,所以拿来这里再整理一下。这个问题在《算法导论》中作为讲动态规划算法的例题出现。动态规划,众所周知,第一步就是找子问题,也就是把一个大的问题分解成子问题。这里我们设两个字符串A、B,A = "a0, a1, a2, ..., am-1",...
分类:
其他好文 时间:
2014-06-15 20:54:15
阅读次数:
229
求数组中最长递增子序列的长度
个人信息:就读于燕大本科软件工程专业 目前大三;
本人博客:google搜索“cqs_2012”即可;
个人爱好:酷爱数据结构和算法,希望将来从事算法工作为人民作出自己的贡献;
编程语言:C++ ;
编程坏境:Windows 7 专业版 x64;
编程工具:vs2008;
制图工具:office 2010 powerpoi...
分类:
其他好文 时间:
2014-06-15 15:53:26
阅读次数:
159
概述:排序算法可分为比较性的排序,以及运算性的排序;这里详细介绍这些排序的原理,性能,实现,以及应用场合。比较排序一:快速排序1:原理采用了分治思想,在序列A[p...r]中选取一个元素,当然这里是用了p或者r处的元素(规格一致);找到该元素的,满足前面的值都比它小,后面的都比它大;同理让子序列递归...
分类:
其他好文 时间:
2014-06-15 00:41:48
阅读次数:
297
void LP(const string &str, int **c){ int m =
str.size(); for(int i=0; i<m; ++i) c[i][i] = 1; for(int d=1; d<m; ++d) {
// 自底向上 ...
分类:
其他好文 时间:
2014-06-13 17:32:10
阅读次数:
234