Loading

随笔分类 -  啊哈!算法

摘要:星期天小哼和小哈约在一起玩桌游,他们正在玩一个非常古怪的扑克游戏——“小猫钓鱼”。游戏的规则是这样的:将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张扑克牌,并放在小哼刚打出的扑克牌的上面,就像这样两人交替出牌。出牌时,如果某人打出的牌与桌上某张 阅读全文
posted @ 2021-02-03 11:00 Robinzhao 阅读(630) 评论(0) 推荐(0)
摘要:最后要将指针 q 也指向当前结点,因为待会儿临时指针 p 将会指向新创建的结点。 q=p;//指针q也指向当前结点 完整代码如下: #include <stdio.h> #include <stdlib.h> //这里创建一个结构体用来表示链表的结点类型 struct node { int data 阅读全文
posted @ 2021-02-03 10:46 Robinzhao 阅读(363) 评论(0) 推荐(0)
摘要:上一节中我们学习了队列,它是一种先进先出的数据结构。还有一种是后进先出的数据结构它叫做栈。栈限定只能在一端进行插入和删除操作。比如说有一个小桶,小桶的直径只能放一个小球,我们现在向小桶内依次放入 2 号、1 号、3 号小球。假如你现在需要拿出 2 号小球,那就必须先将 3 号小球拿出,再拿出 1 号 阅读全文
posted @ 2021-02-02 15:37 Robinzhao 阅读(109) 评论(0) 推荐(0)
摘要:新学期开始了,小哈是小哼的新同桌(小哈是个小美女哦~),小哼向小哈询问 QQ 号,小哈当然不会直接告诉小哼啦,原因嘛你懂的。所以小哈给了小哼一串加密过的数字,同时小哈也告诉了小哼解密规则。规则是这样的:首先将第 1 个数删除,紧接着将第 2 个数放到这串数的末尾,再将第 3个数删除并将第 4 个数再 阅读全文
posted @ 2021-02-01 11:25 Robinzhao 阅读(342) 评论(0) 推荐(0)
摘要:之前讲了三种常用的经典排序。排序算法还有很多,例如选择排序、计数排序、基数排序、插入排序、归并排序和堆排序等等。堆排序是基于二叉树的排序,以后再说吧。先分享一个超酷的排序算法的视频。 再来看一个具体的例子《小哼买书》来看看三个排序在应用上的区别和局限性。 小哼的学校要建立一个图书角,老师派小哼去找一 阅读全文
posted @ 2021-01-22 15:31 Robinzhao 阅读(99) 评论(0) 推荐(0)
摘要:上一节的冒泡排序可以说是我们学习第一个真正的排序算法,并且解决了桶排序浪费空间的问题,但在算法的执行效率上却牺牲了很多,它的时间复杂度达到了 O(N2)。假如我们的计算机每秒钟可以运行 10 亿次,那么对 1 亿个数进行排序,桶排序则只需要 0.1 秒,而冒泡排序则需要 1 千万秒,达到 115 天 阅读全文
posted @ 2021-01-22 15:26 Robinzhao 阅读(71) 评论(0) 推荐(0)
摘要:简化版的桶排序不仅仅有上一节所遗留的问题,更要命的是:它非常浪费空间!例如需要排序数的范围是 0~2100000000 之间,那你则需要申请 2100000001 个变量,也就是说要写成 int a[2100000001]。因为我们需要用 2100000001 个“桶”来存储 0~210000000 阅读全文
posted @ 2021-01-20 15:42 Robinzhao 阅读(69) 评论(0) 推荐(0)
摘要:这个是桶排序,同时也是计数排序。计数排序是对桶排序的一种特殊实现。当桶排序的桶数等于max-min+1时,就是计数排序 在我们生活的这个世界中到处都是被排序过的。站队的时候会按照身高排序,考试的名次需要按照分数排序,网上购物的时候会按照价格排序,电子邮箱中的邮件按照时间排序……总之很多东西都需要排序 阅读全文
posted @ 2021-01-20 10:42 Robinzhao 阅读(318) 评论(0) 推荐(0)