你的问题在于读书太少,想的太多 —— 杨绛
昨天惊闻杨绛先生去世,突然想到了几年前看到的杨绛先生的这句话。我觉得在计算机领域理论知识更是尤为重要,现在某乎上盛行的计算机理论知识(尤指算法)无用论当真特别可悲。在这里我觉得讨论科班非科班的人都是别有用心的,重要的问题在于这些基础的训练,而不是科班非科班,我们知道很多大神都不是计算机相关专业的,但是他们的基础的深厚程度,确是很多科班出身的人无法能及的,所以说一切的问题还是要积累知识。
这学期一直在学编译原理的课程,我实实在在的感觉到了这个课程和相关内容的有趣。尤其是我在学习之前试着自己不借助任何的理论去写一个解释器,竟然也命中了不少的知识,这让
继续阅读 »
从今天起至10月11日,持续连载。
关于计算机
ENIAC
出现于1946年。
是最早的计算机。
是电子管计算机。
其他
阶码,即浮点数的指数部分。
IPv6是128位的。
求补码:二进制下:各位取反再加1 或 把原码减1再取反。
关于算法
各种排序的时间复杂度
快速排序:$O(nlogn)$,最坏为$O(n^2)$。
冒泡排序:$O(n^2)$。
归并排序:$O(nlogn)$。
计数排序:$O(n)$。
插入排序:$O(n^2)$。
关于树
完全二叉树 vs 满二叉树:完全二叉树最后一层不一定满。
前序遍历:中左右;中序遍历:左中右;后序遍历:左右中。
节点数
继续阅读 »
content
{:toc}
简单来说 Fisher–Yates shuffle 算法是一个用来将一个有限集合生成一个随机排列的算法(数组随机排序)。这个算法生成的随机排列是等概率的。同时这个算法非常高效。
本文主要介绍这个算法的来源、演变、原理。并举出一个例子为大家清晰的描述每次迭代过程。最后使用 JavaScript 代码将算法实现。
继续阅读 »
高中时代看一个样貌清秀女孩手捧《情书》在窗边读 ,阳光泻在侧脸,长发如瀑,双肩瘦削,领口的脖颈肤白胜雪,画面太美,不敢多看。然而还是一眼望尽,也立刻记住了岩井俊二这个古怪的日本名字。当时我想,这名字看似逼格颇高,有空我也得读读才成。然而好长一段时间里,再没记起那个场景,今日不知怎的,忽然忆起,打算一读《情书》,权当消磨这心乱如麻的午后。
剧透的序最惹人厌,读罢整个故事便十分了然,他日我若为人作序,定只说破三分,留七分光景予人想往。看得见结局的开头会败了整个故事的兴味,就像一眼瞧得到头的人生并无多大活头。
缘起在于一男一女的藤井树,他们是中学同学,因为同名同姓的缘故受同学撮合,女方无甚感觉,而作为“闷蛋”的男方却有些入戏。自然像
继续阅读 »
分析:按字典序排列的n个单词构成了一个隐式的有向无环图:每个单词单词都有一条出边指向在它字典序之后的每一个单词。要在这张图里找出符合条件的最长路径包含的顶点数。简单的想法就是“暴力”回溯了:对每个顶点进行一次回溯,找出以该点开始的最长的edit step ladder——这个时间复杂度高得能上了火星!思考一下就会发现,回溯包含了大量的重复计算:假设以单词w开始的最长ladder长度为l,那么对于字典中排在w之前的每一个单词(实际上是edit step为1的那些单词),在回溯经过w时都要做同样的重复计算,浪费了大量时间。如果我们计算好了以w开始的最长ladder的长度l,那么对于w的每一个one edit step前驱顶点,其最长la
继续阅读 »
序
最近刚好读完这本书,又刚好领到小组分享任务,办公室内又刚好有契合这本书上讲到的四大逻辑的活动。于是就把自己的读书感悟,结合想到的实例分享出来。正文是大致讲稿思路。
正文
《上瘾》是一本畅销书,作者经多年研究和思考,总结出培养用户使用习惯的理论模型。
继续阅读 »
张五常的经济学说对本人影响很大,重读他的《科学说需求》卷一,希望能对这门学说有新的感悟。同时想让对经济学感兴趣的朋友瞧瞧这门非主流但解释力一流的学说,本人认为《科学说需求》卷一最适合经济学入门。
神州版序
张五常喜欢在文章中提及他的师友,当中获得诺贝尔经济学奖的有 费里德曼、科斯、施蒂格勒。
他还喜欢说自己在中年时决定“少读书甚至不读他家之作,喜欢独自思考”。之所以不读他家之作,是因为他读到过的著作“中所说的所谓事实,大部分没有依凭,有些书引用的全部是假”。
继续阅读 »
定义
希尔排序(英语:Shell sort),也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。
希尔排序是基于插入排序的以下两点性质而提出改进方法的:
插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率
但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位
more
算法步骤
希尔排序通过将比较的全部元素分为几个区域来提升插入排序的性能。这样可以让一个元素可以一次性地朝最终位置前进一大步。然后算法再取越来越小的步长进行排序,算法的最后一步就是普通的插入排序,但是到了这步,需排序的数据几乎是已排好的了(此时插入排序较快)。
选择步长
按照选择的步长对序列进
继续阅读 »
1.简介
对于在网络上的比较小的结点,支持消息传输系统(MTS)是不实际的。例如,一台
工作站可能不具有充足的资源允许SMTP服务器和相当的本地邮件传送系统保持序驻留,
并持续运行。同样的,将一台个人计算机长时间连接在IP类型网络上的费用也是可观的
(结点缺少的资源被称为"联络性")。
虽然如此,在这样的小结点上允许管理邮件是十分有用的,并且这些结点经常支持一
个用户代理来管理邮件。为解决这一问题,能够支持MTS的结点就为这些不能支持的结点提
供了邮件存储功能。邮局协议-版本3就是使这样的工作站可以用一种比较实用的方法来访问
存储于服务器上的储存邮件。通常,这意味着工作站可以从服务器上取得邮件,而服务器为
它暂时保存邮件
继续阅读 »
算法原理
希尔排序算法是按其设计者希尔(Donald Shell)的名字命名,该算法由1959年公布,是插入排序的一种更高效的改进版本。它的作法不是每次一个元素挨一个元素的比较。而是初期选用大跨步(增量较大)间隔比较,使记录跳跃式接近它的排序位置;然后增量缩小;最后增量为 1 ,这样记录移动次数大大减少,提高了排序效率。希尔排序对增量序列的选择没有严格规定。
希尔排序是基于插入排序的以下两点性质而提出改进方法的:
- 插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率
- 但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位
算法思路:
1. 先取一个正整数 d1(d1 < n),把全部记
继续阅读 »