摘要: 排序算法主要有:插入排序,选择排序,冒泡排序,归并排序等,当然包括堆排序和二叉树排序,后两种算法很少用到。各种排序算法之间的比较,主要从以下几个方面综合考虑:1.时间复杂性;2.空间复杂性;3.稳定性;4.待排序记录数n的大小;6.记录本身信息量的大小。下面就这些方面逐一讨论,再综合得出结论。时间复杂性1、 直接插入排序在直接插入排序中,共需要进行(n-1)次元素的插入,每一次插入最少需要比较一次和移动两次,最多需要比较(i+1)次,移动(i+2)次,平均需要比较1+i/2次和移动2+i/2次。因此直接插入排序的复杂度为o(n2)。2、 堆排序,时间复杂度o(nlogn)3、 冒泡排序时间复杂 阅读全文
posted @ 2011-02-27 20:51 liukee 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 问题http://poj.org/problem?id=3259分析既有虫洞又有普通道路,我们把虫洞看成是一条负权路,问题就转化成求一个图中是否存在负权回路,有两种算法:1.bellman_ford算法Bellman-Ford算法流程分为三个阶段:(1)初始化:将除源点外的所有顶点的最短距离估计值 d[v] ←+∞, d[s] ←0;(2)迭代求解:反复对边集E中的每条边进行松弛操作,使得顶点集V中的每个顶点的最短距离估计值逐步逼近其最短距离;(运行|v|-1次)(3)检验负权回路:判断边集E中的每一条边的两个端点是否收敛。如果存在未收敛的顶点,则算法返回false,表明问题无解;否则算法返回 阅读全文
posted @ 2011-02-27 20:13 liukee 阅读(441) 评论(1) 推荐(1) 编辑
摘要: 问题Description 一些货币兑换点正在我们的城市工作。我们假设每个兑换点尤其擅长兑换两种特定的货币,并且只进行对这些货币的兑换。可能有一些兑换点专门兑换相同的货币对。每个兑换点都有自己的汇率,货币A到货币B的汇率是你用1货币A换到的货币B的数量。每个兑换点也有一些佣金,即为你需要为你的兑换行动支付的金额。佣金总是从源货币扣除。 例如,如果你想要在汇率为29.75,并且佣金为0.39的兑换点将100美元兑换成俄罗斯卢布,你将会得到(100-0.39)*29.75=2963.3975卢布。 你有N种不同的货币可以在我们的城市进行兑换。我们为每一种货币制定从1到N的唯一一个整数。每个兑换点可 阅读全文
posted @ 2011-02-27 19:25 liukee 阅读(305) 评论(0) 推荐(0) 编辑