随笔分类 - 算法
摘要:选择排序(假设递增排序)每次选取从当前结点到末尾结点中最小的一个与当前结点交换,每一轮固定一个元素位置。时间复杂度O(n^2),空间复杂度O(1)。下面的示例代码以带头结点的链表为存储结构:#include#include#define Elemtype doublestruct Node{ Ele...
阅读全文
摘要:归并排序是基于分治思想的排序,一递增排序为例:首先将数组平分为两份,将左侧递增排序,右侧递增排序,然后将两侧归并起来,使整体递增有序。示例代码如下:#include#include#define Elemtype intElemtype *B;void merge(Elemtype A[],int ...
阅读全文
摘要:快速排序是基于分治思想的排序,以递增排序为例:首先选取一个基准元素pivot,将小于pivot的元素移到其左侧,大于pivot的元素移到其右侧。这一轮固定了pivot的位置。然后对其左右两侧执行相同的操作。快速排序平均时间复杂度O(nlogn),最差时间复杂度O(n^2);空间复杂度O(1)。示例代...
阅读全文
摘要:Kruskal算法计算最小生成树,只与边有关,时间复杂度O(eloge)步骤:1.将边按权值递增排序2.依次取出边加入最小生成树中并保证无环,判断是否成环可利用并查集。例:http://ac.jobdu.com/problem.php?pid=1024题目描述:省政府“畅通工程”的目标是使全省任何两...
阅读全文
摘要:题目描述:给定一个浮点数序列(可能有正数、0和负数),求出一个最大的连续子序列乘积。分析:若暴力求解,需要O(n^3)时间,太低效,故使用动态规划。设data[i]:第i个数据,dp[i]:以第i个数结尾的连续子序列最大乘积,若题目要求的是最大连续子序列和,则易确定状态转移方程为:dp[i]=max...
阅读全文
浙公网安备 33010602011771号