wylu

Keep It Simple, Stupid

Arch Linux

Arch Linux 是通用 x86-64 GNU/Linux 发行版。Arch采用滚动升级模式,尽全力提供最新的稳定版软件。初始安装的 Arch 只是一个基本系统,随后用户可以根据自己的喜好安装需要的软件并配置成符合自己理想的系统。

阅读全文 »

如果数 a 能被数 b 整除,a 就叫做 b 的倍数,b 就叫做 a 的约数。

几个整数中公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。

几个自然数公有的倍数,叫做这几个数的公倍数,其中最小的一个自然数,叫做这几个数的最小公倍数。

本文将使用欧几里德算法实现求两个数的最大公约数。

阅读全文 »

算符优先分析法:它只考虑算符(终结符)之间的优先关系,分析扫描每个规约式的算符间优先关系。本文将使用算符优先分析法实现求中缀表达式的值。

阅读全文 »

在计算机科学中,Knuth-Morris-Pratt 字符串查找算法(简称 KMP 算法)可在一个主文本字符串 S 内查找一个词 W 的出现位置。此算法通过运用对这个词在不匹配时本身就包含足够的信息来确定下一个匹配将在哪里开始的发现,从而避免重新检查先前匹配的字符。

该算法由唐纳德·克努斯(Donald Knuth)和沃恩·普拉特(Vaughan Pratt)于 1970 年提出,由詹姆斯·h·莫里斯(James H. Morris)独立完成,最终由三人于 1977 年联合发表。这是第一个字符串匹配的线性时间算法。

阅读全文 »

BFPRT 算法是目前解决 TOP-K 问题最有效的算法,又称为中位数的中位数算法,该算法由 Blum、Floyd、Pratt、Rivest、Tarjan 提出,最坏时间复杂度为 \(O(n)\)

在一堆数中求其前 k 大或前 k 小的问题,简称 TOP-K 问题。

阅读全文 »

在计算机科学中,快速选择(Quickselect)是一种从无序列表找到第 k 小元素的选择算法。它从原理上来说与快速排序有关。与快速排序一样都由托尼·霍尔提出的,因而也被称为霍尔选择算法。同样地,它在实际应用是一种高效的算法,具有很好的平均时间复杂度,然而最坏时间复杂度则不理想。快速选择及其变种是实际应用中最常使用的高效选择算法。

阅读全文 »

基数排序(Radix sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。基数排序的发明可以追溯到 1887 年 Herman Hollerith 在打孔卡片制表机(Tabulation Machine)上的贡献。

阅读全文 »