算法-算法分析
infoflow
聚精会神,持之以恒
展开
-
归并排序算法分析与实现
归并排序运用了分治法的思想。 两个有序子数组可以以O(n)的时间复杂度进行合并。 当有序子数组长度s=1时,数组中有n/1个有序子数组,合并后有序子数组长度加倍变为2。 当有序子数组长度s=2时,数组中有n/2个有序子数组,合并后有序子数组长度加倍变为4。 … 当有序子数组长度s=n/2时,数组中有2个有序子数组,合并后有序子数组长度加倍变为n。 此时数组已经完全有序。 时间复杂度分析原创 2017-08-25 23:59:47 · 381 阅读 · 0 评论 -
堆排序算法分析与实现
最大堆的性质:A[i]>=A[2*i] && A[i] >=A[2*i+1] i=1,2,…n/2 满足这种关系的二叉树就叫做最大堆。利用最大堆实现排序的原理最大的特点是根节点的值是所有节点中值最大的节点。利用这个特点就可以通过不断将根节点交换到尾部的有序数组内就可以实现堆排序。 1.构建最大堆 2.将根节点与未排序部分的最后一个元素交换 3.调整堆,使得堆重新变为最大堆时间复杂度调整最大原创 2017-08-26 13:35:27 · 272 阅读 · 0 评论 -
整数划分问题
题目: 将正整数划分成一系列正整数的和: N = n1 + n2 + n3 +n4 + ...+nk ( n1>=n2>=n3...>=nk>=1,k=1)。 正整数的这种表示称为正整数的一种划分。 正整数n的不同的划分数称为n的划分数,记作p(n)。 给定n,求p(n)。 分析: 对给定的n的不同划分,n1一定是小于等于n。因此可以确定 n1的范围为1≤ n1 ≤ n。 为方便原创 2016-03-28 22:49:37 · 1014 阅读 · 0 评论