啊哈算法

《啊哈算法》读后总结(上)

心已入冬 提交于 2019-12-04 16:05:26
阅读时间 :2019.10.31-2019.11.11 阅读心得 : 这本书早有耳闻,但是一直没有落实去看,最近在给自己充电,于是把这本书看了一遍。总体来说,这本书写得很生动有趣,比较适合零基础的人入门,对于我来说内容有些简单(因为我本科已经接触过一些算法,里面的有些内容我之前已经掌握)。但是,这本书除了算法之外,带给我最大的帮助就是更加熟悉了一点C,因为我的C语言不太好,一直都是学习java,比较逃避C,但是在学习这本书的时候,我把里面出现的所有代码都自己消化并手写了一遍,虽然里面的代码十分浅显,但是一本书写下来,我已经对C没有那么恐惧了。所以,我从心里很喜欢这本书。希望想要入门的小伙伴也能把这本书好好看一看。 阅读总结 : 【这本书一共有九章,第九章是一个思路引领,前八章是妥妥的干货。在这里我对这本书的内容,结合自己的理解做一些记录,方便日后能够复习】 第一章:排序 (有多重要大家心里都知道,不会排序的人生是不完整的人生~) 1.桶排序 说实话,我是在这本书里第一次接触桶排序,之前学的排序算法上来都是直接选择、插入、快速、合并,看了这本书才知道还有桶排序这个神奇宝贝哈哈哈。桶排序堪称最快最简单的排序,它的原理是定义一个数组book[]来标记数字是否出现。比如我们现在要对从1到99之间的若干数字进行排序,那么就定义一个数组book[],每出现一个数字 i,就让对应的book[i

《啊哈算法》纸牌游戏---小猫钓鱼

匿名 (未验证) 提交于 2019-12-03 00:25:02
扑克游戏: 将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张放在桌上,就这样两人交替出牌。 出牌时,若某人打出的牌与桌面上的某张牌面相同,即将两张相同的牌以及中间的全部取走,并依次放在自己手中牌的末尾。当任意一人手中的牌全部取完时,游戏结束,对手获胜。 思路: 小哼和小哈有两种操作:出牌和赢牌,即对应出队和入队。桌子即相当于栈,打出一张牌和取走牌对应入栈和出栈。 算法改进:书中的代码在收牌时并没有将桌上相同的那张牌收回,将收牌时的while操作改为do-while。 #include <stdio.h> #include <string.h> #include <stdlib.h> struct queue { int data[1000]; int head; int tail; }; struct stack { int data[10]; int top; }; int main(int argc, char const *argv[]) { struct queue q1, q2; struct stack s; int book[10]; int i, t; q1.head = q1.tail = 0; q2.head = q2.tail = 0; s.top = -1; for (i = 1; i <= 9; ++i

读《啊哈算法》学习笔记---快速排序

匿名 (未验证) 提交于 2019-12-03 00:21:02
读了几章的内容之后,感觉这本书很适合c语言深入的学习,对我们的编程也是有很大帮助的。与是我就写点笔记供以后自己复习回顾。 关于排序算法,排序算法算是最简单也是单片机编程等方面用的较多的一个算法。在之前我这个笨笨经常用的就是冒泡法了。冒泡法就是从第一个数据开始一一挨个比较大小,然后按照大小排成一列,简单粗暴容易理解。 在啊哈算法中已经有了生动的讲解。我把工作学习中的应用写一下吧。 例子:单片机AD采集不断变化的温度值,为了降低噪声,需要进行简单的平均滤波,为了要去除过大过小的波动。那我们就要先进行从小到大的排序,然后在去掉首位的数据,最后将剩下的数据进行平均。 ...... //快速排序算法 void quicksort(float data[],uint16_t low,uint16_t high) { } //平均滤波 float Filter_Data(void) { } 文章来源: 读《啊哈算法》学习笔记---快速排序