摘要: 新学期开始了,小哈是小哼的新同桌(小哈是个小美女哦~),小哼向小哈询问QQ号,小哈当然不会直接告诉小哼啦,原因嘛你懂的。所以小哈给了小哼一串加密过的数字,同时小哈也告诉了小哼解密规则。规则是这样的:首先将第1个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数再放到这串数的末尾, 阅读全文
posted @ 2016-07-27 17:52 N神3 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 之前讲了三种常用的经典排序。排序算法还有很多,例如选择排序、计数排序、基数排序、插入排序、归并排序和堆排序等等。堆排序是基于二叉树的排序,以后再说吧。先分享一个超酷的排序算法的视频。 再来看一个具体的例子《小哼买书》来看看三个排序在应用上的区别和局限性。 小哼的学校要建立一个图书角,老师派小哼去找一 阅读全文
posted @ 2016-07-27 17:05 N神3 阅读(286) 评论(0) 推荐(1) 编辑
摘要: 简化版的桶排序不仅仅有上一节所遗留的问题,更要命的是:它非常浪费空间!例如需要排序数的范围是0~2100000000之间,那你则需要申请2100000001个变量,也就是说要写成int a[2100000001]。因为我们需要用2100000001个“桶”来存储0~2100000000之间每一个数出 阅读全文
posted @ 2016-07-27 14:57 N神3 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 最快最简单的排序——桶排序 在我们生活的这个世界中到处都是被排序过的。站队的时候会按照身高排序,考试的名次需要按照分数排序,网上购物的时候会按照价格排序,电子邮箱中的邮件按照时间排序……总之很多东西都需要排序,可以说排序是无处不在。现在我们举个具体的例子来介绍一下排序算法。 首先出场的我们的主人公小 阅读全文
posted @ 2016-07-27 14:44 N神3 阅读(7528) 评论(0) 推荐(1) 编辑
摘要: 接着上一Pa说。就是如何建立这个堆呢。可以从空的堆开始,然后依次往堆中插入每一个元素,直到所有数都被插入(转移到堆中为止)。因为插入第i个元素的所用的时间是O(log i),所以插入所有元素的整体时间复杂度是O(NlogN),代码如下。 1 2 3 4 5 6 7 n=0; for(i=1;i<=m 阅读全文
posted @ 2016-07-27 12:20 N神3 阅读(2603) 评论(0) 推荐(1) 编辑
摘要: 堆是什么?是一种特殊的完全二叉树,就像下面这棵树一样。 有没有发现这棵二叉树有一个特点,就是所有父结点都比子结点要小(注意:圆圈里面的数是值,圆圈上面的数是这个结点的编号,此规定仅适用于本节)。符合这样特点的完全二叉树我们称为最小堆。反之,如果所有父结点都比子结点要大,这样的完全二叉树称为最大堆。那 阅读全文
posted @ 2016-07-27 11:59 N神3 阅读(20640) 评论(0) 推荐(12) 编辑