2013-08-09 Robin Wen
文/Robin 本站推广 币安是全球领先的数字货币交易平台,提供比特币、以太坊、BNB 以及 USDT 交易。 币安注册: https://accounts.binancezh.pro/cn/register/?ref=11190872 邀请码: 11190872 想了很久,这周谈谈什么呢?转念一想,既然有一件事情你坚持了那么久,为什么不和大家分享分享呢?本文谈谈英语学习。 英语的重要性不言而喻了吧,对于IT人来说其重要性更是荦荦大者。经常听有人说IT人英语不好走不远,话虽如此,但不可以偏概全,我们可以看到英语不咋样的技术奇才照样可以过得风生水起。这里我想说的是英语好在IT行业绝对是一个很好的优势,最新的技术,一手的文 继续阅读 »
2016-09-04 craneyuan
在了解堆排序之前,我们有必要清楚“什么是堆呢?”。 堆(英语:Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。堆即为解决此类问题设计的一种数据结构。 堆的逻辑定义: 堆的实现通过构造二叉堆(英语:binary heap),实为二叉树的一种;由于其应用的普遍性,当不加限定时,均指该数据结构的这种实现。这种数据结构具有以下性质。 任意节点小于(或大于)它的所有后裔,最小元(或最大元)在堆的根上(堆序性)。 堆总是一棵完全树。即 继续阅读 »
2020-08-08 Robin Wen
文/Robin 笔者长期使用 Google Translate 作为翻译辅助工具,直到遇到了本文的主角 DeepL Translator。 DeepL 翻译(英语: DeepL Translator)是于 2017 年 8 月由 DeepL GmbH(一家由 Linguee 支持的创业公司)推出的翻译服务,支持 简体中文、英语、德语、法语、日语、西班牙语、意大利语、荷兰语及波兰语之间的翻译。其利用神经网络训练翻译能力。与 Google 翻译、 Bing 翻译及 Facebook 等其他主流的翻译服务相比,DeepL Translator 的翻译显得更加自然,在同等时间内得到的翻译结果更精确、更细致。 我们来看看知名机构、媒 继续阅读 »
2016-09-02 craneyuan
定义 希尔排序(英语:Shell sort),也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位 more 算法步骤 希尔排序通过将比较的全部元素分为几个区域来提升插入排序的性能。这样可以让一个元素可以一次性地朝最终位置前进一大步。然后算法再取越来越小的步长进行排序,算法的最后一步就是普通的插入排序,但是到了这步,需排序的数据几乎是已排好的了(此时插入排序较快)。 选择步长 按照选择的步长对序列进 继续阅读 »
2016-08-29 craneyuan
定义 插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 more 算法步骤 插入排序算法的运作如下: 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素(已排序)大于新元素,将该元素移到下一位置 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 将新元素插入到该位置后 重复 继续阅读 »
2016-09-03 craneyuan
定义 快速排序(英语:Quick Sort),又称划分交换排序(partition-exchange sort),一种排序算法,最早由东尼·霍尔提出。在平均状况下,排序n个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n)算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。 more 算法步骤 快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。 步骤为: 从数列中挑出一个元素,称为"基准"(pivot), 重新排序数列 继续阅读 »
2016-08-28 craneyuan
定义 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 more 算法步骤 冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 伪代码如下: 继续阅读 »
2016-09-05 craneyuan
定义 基数排序(英语:Radix Sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。 more 算法步骤 将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。 然后,从最低位开始,依次进行一次排序。 这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。 基数排序的方式可以采用LSD(Least significant digital)或MSD(Most significant digital),LSD的排序方式由键值的最右边开始,而MSD则相反,由 继续阅读 »
2016-11-20 Eric Wang
作者简介:乔治·奥威尔(1903—1950),原名埃里克·亚瑟·布莱尔。英国伟大的人道主义作家、新闻记者和社会评论家,著名的英语文体家,以小说《动物农场》和《一九八四》闻名于世。1944年写成讽刺苏联革命的政治寓言小说《动物农场》,次年出版后头一次使奥威尔名利双收。1949年出版政治讽喻小说,也是他最后的作品《一九八四》。 《动物农场》讲述了农场的一群动物成功地进行了一场“革命”,将压榨他们的人类东家赶出农场,建立起一个平等的动物社会。然而,动物领袖,那些聪明的猪们最终却篡夺了革命的果实,成为比人类东家更加独裁和极权的统治者。不妨可以把这个故事理解为从封建主义走向社会主义,表面上看是一个极大的进步,动物们实现了自己当家做主的愿望。 继续阅读 »
2016-06-19 YongHao Hu
C++
英语是计算机的母语,是程序的母语,所以必然是程序员的母语。程序中的变量名、函数名起得好不好是决定代码质量和可维护性的最关键因素。高质量的代码应该是这样的:代码基本上是自解释的(self-explanatory),不需要太多注释,不管代码的规模有多大,具有相关知识背景的读过文档的人都可以立刻上手、立刻参与维护和开发。要想使代码能够自解释,给变量和函数起个好名字很关键,很显然,只能用英文起名字,一是用汉语拼音起名字可读性很差,二是英文单词通常比汉语更expressive(看吧,如果用汉语来说,就得说“表达能力更强”、“更有表现力”这么罗嗦),由于程序的复杂性,变量和函数往往表示一些很抽象的概念,起个既准确又简洁的名字并不容易,可是很多时 继续阅读 »