在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程。算法的效率或复杂度在理论上表示为一个函数。其定义域是输入数据的长度,值域通常是执行步骤数量(时间复杂度)或者存储器位置数量(空间复杂度)。算法分析是...
分类:
编程语言 时间:
2014-10-22 14:12:10
阅读次数:
490
1、程序的性能
程序的性能由时间复杂度和空间复杂度决定。
1.1空间复杂度
程序所需要的空间主要由以下部分构成:
? 指令空间。存储经过编译之后的程序指令。指令有操作数和操作码构成。
? 数据空间。存储所有常量和所有变量值所需的空间。
? 环境栈空间。保存函数调用返回时恢复运行所需要的信
息。
(1)指令空间
程序所需指令空间的大小取决于如下因素:
...
分类:
编程语言 时间:
2014-10-21 10:22:07
阅读次数:
252
Inspection
题目:
题目还是比较裸的没有上界只有下界的网络最小流问题。输出路劲太烦人了。!不想写了。给出别人的代码。
算法分析:
网络最小流一般用二分查找判断就好了。要注意的就是在最后输出路径的时候要在调用一次最大流。因为,之前结束的流量不一定是最后答案的流量。
#include
#include
#include
#include
using...
分类:
其他好文 时间:
2014-10-20 17:26:02
阅读次数:
209
关于快速排序算法,由于其有着很好的平均时间复杂度而得到了广泛的应用。快排的思想:每次从数组中取出一个元素出来,然后将该元素放置到一个合适的位置,使得该元素前面的数都小于或等于该元素,其后面的数都大于或等于该元素。然后在对该元素左右两边的数组进行同样的操作,直到左右两边的元素为空。比如:有数组:538...
分类:
编程语言 时间:
2014-10-17 21:41:15
阅读次数:
252
Going Home
题目:
给出一个N*M的图,图上的m表示人,H表示房子,每座房子只能有一个人,要求你所有人到房子中总步数最少。m个数与H个数一样多。
算法分析:
这个题目还是比较裸的。可以想到先求出每个人到每座房子的距离。然后求出最小花费,这个好像就是最小费用流吧?一开始用了KM写完后,发现。。。。哪里不对啊?后来才觉悟,原来题目是求解最小花费,KM是最大匹配...
分类:
其他好文 时间:
2014-10-10 09:46:54
阅读次数:
167
Optimal Milking
题目:
有K个机器,C只牛。要求求出最所有牛到各个产奶机的最短距离。给出一个C+K的矩阵,表示各种标号间的距离。
而每个地方最多有M只牛。
算法分析:
二分+最短路+网络流
想法难以想到。我是看解题报告的思路。然后,自己上了手。开始wrong 了3次。后来各种该,无意的一个更改就AC了。无语勒。。。。
wrong 在了,...
分类:
其他好文 时间:
2014-10-09 19:58:23
阅读次数:
206
Farm Tour
题目:
约翰有N块地,家在1号,而N号是个仓库。农场内有M条道路(双向的),道路i连接这ai号地和bi号地,长度为ci。约翰希望按照从家里出发,经过若干地后达到仓库,然后再返回家中。如果要求往返不能经过同一条道路两次,求参观路线总长度最小值。
算法分析:
用最短路求解然后在删除第一次最短路中的边在求解一次最短路,这样是否可行?应该马上就能找到反例...
分类:
其他好文 时间:
2014-10-07 15:12:23
阅读次数:
128
Dual Core CPU
题目:
给出由核A和核B组成的双核CPU上的运行N个模块。模块i在核A上执行的花费为Ai,在核B上执行的花费为Bi。有M个互相之间需要进行数据交换的模块组合(ai,bi),如果,这两块模块在同一个核上执行则没有额外的费用,否则会产生wi的花费。请计算执行所有模块所需的最小花费。
算法分析:
用最小的费用将对象划分成两个集合问题,常常可以转...
分类:
其他好文 时间:
2014-10-07 11:46:33
阅读次数:
227
一、题目 编写支持双端队列的例程,插入与弹出操作均花费 O(1)时间二、解答 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的数据结构。 双端队列中的元素可以从两端弹出,插入和删除操作限定在队列的两边进行。 基本操作:在双端队列两端插入与删除。 ADT...
分类:
其他好文 时间:
2014-10-06 01:44:29
阅读次数:
341
一、题目 用一个数组实现三个(或多个)栈二、解答 用一个数组实现三个乃至多个栈,如果想使用一个数组构造两个栈的思想则行不通; 考虑使用静态链表,数组结点中存在两个域,关键字域与指示栈的前驱的游标,则可以使三个栈可以用一个数组表示; ADT的关键术语: Capacity: 数组的容量; S...
分类:
其他好文 时间:
2014-10-05 23:21:59
阅读次数:
216