摘要: 上周我们介绍了神奇的只有五行的Floyd最短路算法,它可以方便的求得任意两点的最短路径,这称为“多源最短路”。本周来来介绍指定一个点(源点)到其余各个顶点的最短路径,也叫做“单源最短路径”。例如求下图中的1号顶点到2、3、4、5、6号顶点的最短路径。 与Floyd-Warshall算法一样这里仍然使 阅读全文
posted @ 2014-03-31 14:20 星月相随 阅读(250) 评论(0) 推荐(0)
摘要: 暑假,小哼准备去一些城市旅游。有些城市之间有公路,有些城市之间则没有,如下图。为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程。 上图中有4个城市8条公路,公路上的数字表示这条公路的长短。请注意这些公路是单向的。我们现在需要求任意两个城市之间的最短路程,也就是求任意两个 阅读全文
posted @ 2014-03-31 14:19 星月相随 阅读(377) 评论(0) 推荐(0)
摘要: 新学期开始了,小哈是小哼的新同桌(小哈是个小美女哦~),小哼向小哈询问QQ号,小哈当然不会直接告诉小哼啦,原因嘛你懂的。所以小哈给了小哼一串加密过的数字,同时小哈也告诉了小哼解密规则。规则是这样的:首先将第1个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数再放到这串数的末尾, 阅读全文
posted @ 2014-03-31 14:17 星月相随 阅读(506) 评论(0) 推荐(0)
摘要: 之前讲了三种常用的经典排序。排序算法还有很多,例如选择排序、计数排序、基数排序、插入排序、归并排序和堆排序等等。堆排序是基于二叉树的排序,以后再说吧。先分享一个超酷的排序算法的视频。 再来看一个具体的例子《小哼买书》来看看三个排序在应用上的区别和局限性。 小哼的学校要建立一个图书角,老师派小哼去找一 阅读全文
posted @ 2014-03-31 14:16 星月相随 阅读(274) 评论(0) 推荐(0)
摘要: 上一节的冒泡排序可以说是我们学习第一个真正的排序算法,并且解决了桶排序浪费空间的问题,但在算法的执行效率上却牺牲了很多,它的时间复杂度达到了O(N2)。假如我们的计算机每秒钟可以运行10亿次,那么对1亿个数进行排序,桶排序则只需要0.1秒,而冒泡排序则需要1千万秒,达到115天之久,是不是很吓人。那 阅读全文
posted @ 2014-03-31 14:15 星月相随 阅读(357) 评论(0) 推荐(0)
摘要: 【啊哈!算法】 简化版的桶排序不仅仅有上一节所遗留的问题,更要命的是:它非常浪费空间!例如需要排序数的范围是0~2100000000之间,那你则需要申请2100000001个变量,也就是说要写成int a[2100000001]。因为我们需要用2100000001个“桶”来存储0~210000000 阅读全文
posted @ 2014-03-31 14:13 星月相随 阅读(266) 评论(0) 推荐(0)
摘要: 【啊哈!算法】 在我们生活的这个世界中到处都是被排序过的。站队的时候会按照身高排序,考试的名次需要按照分数排序,网上购物的时候会按照价格排序,电子邮箱中的邮件按照时间排序……总之很多东西都需要排序,可以说排序是无处不在。现在我们举个具体的例子来介绍一下排序算法。 首先出场的我们的主人公小哼,上面这个 阅读全文
posted @ 2014-03-31 14:07 星月相随 阅读(776) 评论(2) 推荐(1)
摘要: C++中的陷阱(一) 导言 程序设计语言中充满陷阱,一不小心就会掉入其中万劫不复,之所以有陷阱,是因为语言的设计细节不符合程序员的直觉 所以你会发现,语言越高级越注重顺从程序员的直觉。 c++也有许多陷阱,所谓山不过来,我就过去,因此将c++中易错点、难点集合于此,会不定期更新。 字符串与vecto 阅读全文
posted @ 2014-03-31 11:42 星月相随 阅读(318) 评论(0) 推荐(1)