摘要:
普通的链表队列和栈的实现差不多,只是修改一下进出的规则即可。(感觉自己就像在翻译算法导论的伪代码一样。。不过还好吧,也有一点自己的理解) 下面是代码:#include#includetypedef struct _node{ int num; struct _node *next;}n... 阅读全文
摘要:
本来想假期再继续,结果发现写博客已经成了总结自己的一种习惯,所以还是继续写吧。 其实有一部分原因是今天英语考砸了。。哈哈,不管那些了,看来以后学习方式得改变一下,不能太功利,从简单开始,一点一点做好。 今天是队列的数组优化。昨天的队列有一个致命弱点,就是能盛放的数据数量越来越少,至于原因可以自己思... 阅读全文
摘要:
把昨天提到的S.bottom简化之后又改了栈的链表。代码如下(已折叠):#include#includetypedef struct _node{ int num; struct _node *next;}node;node *s;void build(node *&S){ s=... 阅读全文
摘要:
一直想做一个链表实现的栈,今天终于实现了。确实比数组要难多了,打了很久,很长时间花在了想象上(指针调试比较复杂。。)但是链表实现有一个最大的好处,就是动态分配内存,所以一般不会出现栈顶溢出的问题。值得一提的是代码中比昨天的多了一个build函数。建立一个新栈。那么init函数,还是初始化一个栈。昨天... 阅读全文
摘要:
栈在暑假的时候接触过了,当时还写了个计算器,用的中缀表达式后缀表达式的栈操作。 http://www.cnblogs.com/itlqs/p/4749998.html 今天按照算法导论上的讲解规范了一下代码。主要是栈的初始化、判断空栈、入栈、出栈、遍历栈。#include#define MA... 阅读全文
摘要:
刚整理完史纲期末复习资料,所以今天看的比较少,也不是很仔细。所以今天就只说一下自己的理解吧。 在最值选法讲完之后,书上又讲了选择算法,所谓选择算法就是选取中位数,更一般的,选取第k小的元素的算法。 实际上我理解的话,就是的排序算法思想的借鉴,书上的5个5个分的选中位数的没太看懂,这里就说两个我想的... 阅读全文
摘要:
今天想做测试各个排序算法运行时间比较的程序,来对这几天学的排序算法小结一下。所以我先生成了1000000个1~150之间的随机数存到文件里。然后做了一个测试运行时间的程序。想看一下结构。但是结果效果并不太好。实践中,自己做的qsort函数和mergesort函数并没有理想中的那么快。结果是这样:(... 阅读全文
摘要:
今天的这个比较神奇,是一个线性复杂度的排序算法O(n),算法导论在这一部分先证明了比较排序的复杂度下界是nlgn,所以基数排序不是基于比较的排序。 其实这种比较方法我们应该都接触过。假设输入的数都是三位以下的数(当然其他位数也可以,类比一下,这里就假设是三位数、两位数、一位数),那么只需要大致3n... 阅读全文
摘要:
今天上最后一节史纲课,老师说不管什么学科,最重要的就是思想。我觉得很有道理。 好吧,不扯了。原谅我看书选择了速读策略,中间有很多感觉目前还很难看懂,以后有时间再细细学习。把略过去的在这里记一下。一、矩阵乘法算法。复杂度从n^3优化到了n^2.81 (数字比较神奇)。因为还没学线性代数,所以以后学了... 阅读全文
摘要:
顶着期末复习的压力,还是在今天过完之前看完了一个算法——最大子数组问题。《算法导论》中引入这个问题是通过股票的购买与出售,经过问题转换(转换的过程比较简单,但是不好想),将前一天的当天的股票差价重新表示出来,即转为了一个最大子数组的问题 ,具体内容是: 13, -3, -25, 20, -3, ... 阅读全文