28个不得不看的经典编程算法

时间:2024.4.29

28个不得不看的经典编程算法.txt我的优点是:我很帅;但是我的缺点是:我帅的不明显。什么是幸福?幸福就是猫吃鱼,狗吃肉,奥特曼打小怪兽!令堂可是令尊表姐?我是胖人,不是粗人。 28个不得不看的经典编程算法!!数学软件计算机的进来!~

来源: 琚敏的日志

前十个是来自圣经的十大算法:

发起人的描述:《来自圣经的证明》收集了数十个简洁而优雅的数学证明,迅速赢得了大批数学爱好者的追捧。如果还有一本《来自圣经的算法》,哪些算法会列入其中呢?

第一名:Union-find

严格地说,并查集是一种数据结构,它专门用来处理集合的合并操作和查询操作。并查集巧妙地借用了树结构,使得编程复杂度降低到了令人难以置信的地步;用上一些递归技巧后,各种操作几乎都能用两行代码搞定。而路径压缩的好主意,更是整个数据结构的画龙点睛之笔。并查集的效率极高,单次操作的时间复杂度几乎可以看作是常数级别;但由于数据结构的实际行为难以预测,精确的时间复杂度分析需要用到不少高深的技巧。

第二名:Knuth-Morris-Pratt字符串匹配算法

关于此算法的介绍,请参考此文:六、教你从头到尾彻底理解KMP算法。KMP算法曾经落选于二十世纪最伟大的十大算法,但人们显然不能接受,如此漂亮、高效的KMP算法竟然会落选。所以,此次最终投票产出生,KMP算法排到了第二名。

第三名:BFPRT 算法

1973 年,Blum、Floyd、Pratt、Rivest、Tarjan集体出动,合写了一篇题为 “Time bounds for selection” 的论文,给出了一种在数组中选出第 k 大元素的算法,俗称"中位数之中位数算法"。依靠一种精心设计的 pivot 选取方法,该算法从理论上保证了最坏情形下的线性时间复杂度,打败了平均线性、最坏 O(n^2) 复杂度的传统算法。一群大牛把递归算法的复杂度分析玩弄于骨掌股掌之间,构造出了一个当之无愧的来自圣经的算法。

我在这里简单介绍下在数组中选出第k大元素的时间复杂度为O(N)的算法: 类似快排中的分割算法:

每次分割后都能返回枢纽点在数组中的位置s,然后比较s与k的大小

若大的话,则再次递归划分array[s..n],

小的话,就递归array[left...s-1] //s为中间枢纽点元素。

否则返回array[s],就是partition中返回的值。 //就是要找到这个s。

找到符合要求的s值后,再遍历输出比s小的那一边的元素。

各位可参考在:算法导论上,第九章中,以期望线性时间做选择,一节中,

我找到了这个 寻找数组中第k小的元素的,平均时间复杂度为O(N)的证明:上述程序的期望运行时间,最后证明可得O(n),且假定元素是不同的。

第四名:Quicksort(快速排序)

快速排序算法几乎涵盖了所有经典算法的所有榜单。它曾获选二十世纪最伟大的十大算法(参

考这:细数二十世纪最伟大的10大算法)。关于快速排序算法的具体介绍,请参考我写的这篇文章:一之续、快速排序算法的深入分析,及十二、快速排序算法之所有版本的c/c++实现。

第五名:Floyd-Warshall all-pairs最短路径算法

关于此算法的介绍,可参考我写的此文:几个最短路径算法比较(/v_JULY_v/archive/2011/02/12/6181485.aspx)。

d[]: 二维数组. d[i,j]最小花费、或最短路径的邻边。

for k from 1 to n:

for i from 1 to n:

for j from 1 to n:

d[i,j] = min(d[i,j], d[i,k] + d[k,j])

第六名:Gentry's Fully Homomorphic Encryption Scheme(绅士完全同态加密机制)算法。 此算法很漂亮,它允许第三方执行任意加密数据运算得不到私钥(不是很了解)。

第七名:Depth First Search、Breadth First Search(深度、广度优先搜索)

它们是许多其他算法的基础。关于深度、广度优先搜索算法的具体介绍,请参考此文:教你通透彻底理解:BFS和DFS优先搜索算法。

第八名:Miller-Rabin作的类似的试验测试

这个想法是利用素数的性质(如使用费马大定理)的小概率寻找见证不数素数。如果没有证据是足够的随机检验后发现,这一数字为素数。

第九名:Binary Search (二分查找)

在一个有序的集合中查找元素,可以使用二分查找算法,也叫二分搜索。二分查找算法先比较位于集合中间位置的元素与键的大小,有三种情况(假设集合是从小到大排列的):

1.键小于中间位置的元素,则匹配元素必在左边(如果有的话),于是对左边的区域应用二分搜索。

2.键等于中间位置的元素,所以元素找到。

3.键大于中间位置的元素,则匹配元素必在右边(如果有的话),于是对右边的区域应用二分搜索。

另外,当集合为空,则代表找不到。

第十名:Huffman coding(霍夫曼编码)

霍夫曼编码(Huffman Coding)是一种编码方式,是一种用于无损数据压缩的熵编码(权编码)算法。19xx年,David A. Huffman在麻省理工攻读博士时所发明的,并发表于《一种构建极小多余编码的方法》(A Method for the Construction of Minimum-Redundancy Codes)一文。

十一、Cooley-Tukey FFT算法。快速傅里叶变换算法。关于傅里叶变换算法的介绍,请参考此文:十、从头到尾彻底理解傅里叶变换算法、上,及十、从头到尾彻底理解傅里叶变换算法、下。

十二、linear programming,线性规划。

十三、Dijkstra 算法。与上第五一样,又一种最短路径算法。具体介绍,请参考:二之续、彻底理解Dijkstra算法,和二(再续)、Dijkstra 算法+fibonacci堆的逐步c实现。

十四、Merge Sort。归并排序。

十五、Ford–Fulkerson算法。网络最大流算法。

十六、辗转相除法。

在数学中,辗转相除法,又称欧几里得算法,是求最大公约数的算法,即求两个正整数之最大公因子的算法。此算法作为TAOCP第一个算法被阐述,足见此算法被重视的程度。它是已知最古老的算法, 其可追溯至3000年前。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。扩展的辗转相除法则构造性地证明了,对任意整数a和b ,存在一对x、y使得 ax + by = gcd(a, b) 。

十七、RSA加密演算法。一种加密算法,日后再做详细介绍。

十八、遗传算法。可参考本人写的关于GA 算法的这篇文章:七、遗传算法 透析GA本质。

十九、最大期望(EM)算法。

此算法入选数据挖掘领域十大经典算法。在统计计算中,最大期望(EM)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variable)。最大期望经常用在机器学习和计算机视觉的数据聚类(Data Clustering)领域。最大期望算法经过两个步骤交替进行计算,第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;第二步是最大化(M),最大化在 E 步上求得的最大似然值来计算参数的值。M 步上找到的参数估计值被用于下一个 E 步计算中,这个过程不断交替进行。

二十、数据压缩

数据压缩是通过减少计算机中所存储数据或者通信传播中数据的冗余度,达到增大数据密度,最终使数据的存储空间减少的技术。数据压缩在文件存储和分布式系统领域有着十分广泛的应用。数据压缩也代表着尺寸媒介容量的增大和网络带宽的扩展。

二十一、Hash函数

Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。关于hash表的详细阐述,请参考此篇文章:十一、从头到尾彻底解析Hash表算法。

二十二、Dynamic Programming(动态规划)。关于动态规划的粗略介绍,请参考此文:三、dynamic programming。

二十三、堆排序算法。

堆排序算法作为一种快速稳定的算法,其平均时间复杂度(最坏也为)O(n*lgn)。当然,在实际应用中,一个实现的好的快速排序算法仍然要优于堆排序算法。不过,堆数据结构还可以作为高效的优先级队列。对堆排序算法作简单了解,可参考这:堆排序算法。

二十四、递归与回溯算法。此俩个算法,相信各位比较熟悉,在此不做赘述。

二十五、最长公共子序列

最长公共子序列,英文缩写为LCS(Longest Common Subsequence)。其定义是,一个数列 S ,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。

动态规划的一个计算最长公共子序列的方法如下:

以两个序列 X、Y 为例子:

设有二维数组 f[i][j] 表示 X 的 i 位和 Y 的 j 位之前的最长公共子序列的长度,则有:

f[1][1] = same(1,1)

f[i][j] = max{f[i-1][j-1]+same(i,j),f[i-1][j],f[i][j-1]}

其中,same(a,b)当 X 的第 a 位与 Y 的第 b 位完全相同时为“1”,否则为“0”。 此时,f[i][j]中最大的数便是 X 和 Y 的最长公共子序列的长度,依据该数组回溯,便可找出最长公共子序列。

该算法的空间、时间复杂度均为O(n2),经过优化后,空间复杂度可为O(n),时间复杂度为O(nlogn)。更多详情,参见之前写的一篇拙文(不过,鉴于写的糟,日后会重写):三、dynamic programming。

二十六、红黑树的算法与实现

关于红黑树,linux内核中有实现,本BLOG内也已经写了4篇红黑树系列的文章。详情,请参考:五(续)、教你透彻了解红黑树。

二十七、A*搜寻算法。

相对于BFS、Dijkstra 等算法,A*搜寻算法作为一种高效的最短路径搜索算法,如今,已得到日益广泛的应用。初步了解A*搜寻算法的高效及与其它最短路径算法的比较,请参考此文:一(续)、A*,Dijkstra,BFS算法性能比较及A*算法的应用。

二十八、图像特征提取与匹配之SIFT算法

sift,尺度不变特征转换,是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由 David Lowe 在19xx年所发表,20xx年完善总结。关于此算法,请参考如下,粗略介绍:九、图像特征提取与匹配之SIFT算法,利用第三方库编译过程:九(续)、sift算法的编译与实现,c语言一步一步实现sift算法:九之再续:一步一步用c语言实现sift算法、上,及九之再续:教你一步一步用c语言实现sift算法、下。


第二篇:28个不得不看的经典编程算法!!数学软件计算机的进来!~


前十个是来自圣经的十大算法:

发起人的描述:《来自圣经的证明》收集了数十个简洁而优雅的数学证明,迅速赢得了大批数学爱好者的追捧。如果还有一本《来自圣经的算法》,哪些算法会列入其中呢? 第一名:Union-find

严格地说,并查集是一种数据结构,它专门用来处理集合的合并操作和查询操作。并查集巧妙地借用了树结构,使得编程复杂度降低到了令人难以置信的地步;用上一些递归技巧后,各种操作几乎都能用两行代码搞定。而路径压缩的好主意,更是整个数据结构的画龙点睛之笔。并查集的效率极高,单次操作的时间复杂度几乎可以看作是常数级别;但由于数据结构的实际行为难以预测,精确的时间复杂度分析需要用到不少高深的技巧。

第二名:Knuth-Morris-Pratt字符串匹配算法

关于此算法的介绍,请参考此文:六、教你从头到尾彻底理解KMP算法。KMP算法曾经落选于二十世纪最伟大的十大算法,但人们显然不能接受,如此漂亮、高效的KMP算法竟然会落选。所以,此次最终投票产出生,KMP算法排到了第二名。

第三名:BFPRT 算法

1973 年,Blum、Floyd、Pratt、Rivest、Tarjan集体出动,合写了一篇题为 “Time bounds for selection” 的论文,给出了一种在数组中选出第 k 大元素的算法,俗称"中位数之中位数算法"。依靠一种精心设计的 pivot 选取方法,该算法从理论上保证了最坏情形下的线性时间复杂度,打败了平均线性、最坏 O(n^2) 复杂度的传统算法。一群大牛把递归算法的复杂度分析玩弄于骨掌股掌之间,构造出了一个当之无愧的来自圣经的算法。

我在这里简单介绍下在数组中选出第k大元素的时间复杂度为O(N)的算法: 类似快排中的分割算法:

每次分割后都能返回枢纽点在数组中的位置s,然后比较s与k的大小

若大的话,则再次递归划分array[s..n],

小的话,就递归array[left...s-1] //s为中间枢纽点元素。

否则返回array[s],就是partition中返回的值。 //就是要找到这个s。

找到符合要求的s值后,再遍历输出比s小的那一边的元素。

各位可参考在:算法导论上,第九章中,以期望线性时间做选择,一节中,

我找到了这个 寻找数组中第k小的元素的,平均时间复杂度为O(N)的证明:上述程序的期望运行时间,最后证明可得O(n),且假定元素是不同的。

第四名:Quicksort(快速排序)

快速排序算法几乎涵盖了所有经典算法的所有榜单。它曾获选二十世纪最伟大的十大算法(参考这:细数二十世纪最伟大的10大算法)。关于快速排序算法的具体介绍,请参考我写的这篇文章:一之续、快速排序算法的深入分析,及十二、快速排序算法之所有版本的c/c++实现。

第五名:Floyd-Warshall all-pairs最短路径算法

关于此算法的介绍,可参考我写的此文:几个最短路径算法比较(/v_JULY_v/archive/2011/02/12/6181485.aspx)。

d[]: 二维数组. d[i,j]最小花费、或最短路径的邻边。

for k from 1 to n:

for i from 1 to n:

for j from 1 to n:

d[i,j] = min(d[i,j], d[i,k] + d[k,j])

第六名:Gentry's Fully Homomorphic Encryption Scheme(绅士完全同态加密机制)算法。

此算法很漂亮,它允许第三方执行任意加密数据运算得不到私钥(不是很了解)。

第七名:Depth First Search、Breadth First Search(深度、广度优先搜索)

它们是许多其他算法的基础。关于深度、广度优先搜索算法的具体介绍,请参考此文:教你通透彻底理解:BFS和DFS优先搜索算法。

第八名:Miller-Rabin作的类似的试验测试

这个想法是利用素数的性质(如使用费马大定理)的小概率寻找见证不数素数。如果没有证据是足够的随机检验后发现,这一数字为素数。

第九名:Binary Search (二分查找)

在一个有序的集合中查找元素,可以使用二分查找算法,也叫二分搜索。二分查找算法先比较位于集合中间位置的元素与键的大小,有三种情况(假设集合是从小到大排列的):

1.键小于中间位置的元素,则匹配元素必在左边(如果有的话),于是对左边的区域应用二分搜索。

2.键等于中间位置的元素,所以元素找到。

3.键大于中间位置的元素,则匹配元素必在右边(如果有的话),于是对右边的区域应用二分搜索。

另外,当集合为空,则代表找不到。

第十名:Huffman coding(霍夫曼编码)

霍夫曼编码(Huffman Coding)是一种编码方式,是一种用于无损数据压缩的熵编码(权编码)算法。19xx年,David A. Huffman在麻省理工攻读博士时所发明的,并发表于《一种构建极小多余编码的方法》(A Method for the Construction of Minimum-Redundancy Codes)一文。

十一、Cooley-Tukey FFT算法。快速傅里叶变换算法。关于傅里叶变换算法的介绍,请参考此文:十、从头到尾彻底理解傅里叶变换算法、上,及十、从头到尾彻底理解傅里叶变换算法、下。

十二、linear programming,线性规划。

十三、Dijkstra 算法。与上第五一样,又一种最短路径算法。具体介绍,请参考:二之续、彻底理解Dijkstra算法,和二(再续)、Dijkstra 算法+fibonacci堆的逐步c实现。

十四、Merge Sort。归并排序。

十五、Ford–Fulkerson算法。网络最大流算法。

十六、辗转相除法。

在数学中,辗转相除法,又称欧几里得算法,是求最大公约数的算法,即求两个正整数之最大公因子的算法。此算法作为TAOCP第一个算法被阐述,足见此算法被重视的程度。它是已知最古老的算法, 其可追溯至3000年前。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。扩展的辗转相除法则构造性地证明了,对任意整数a和b ,存在一对x、y使得 ax + by = gcd(a, b) 。

十七、RSA加密演算法。一种加密算法,日后再做详细介绍。

十八、遗传算法。可参考本人写的关于GA 算法的这篇文章:七、遗传算法 透析GA本质。

十九、最大期望(EM)算法。

此算法入选数据挖掘领域十大经典算法。在统计计算中,最大期望(EM)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variable)。最大期望经常用在机器学习和计算机视觉的数据聚类(Data Clustering)领域。最大期望算法经过两个步骤交替进行计算,第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;第二步是最大化(M),最大化在 E 步上求得的最大似然值来计算参数的值。M 步上找到的参数估计值被用于下一个 E 步计算中,这个过程不断交替进行。

二十、数据压缩

数据压缩是通过减少计算机中所存储数据或者通信传播中数据的冗余度,达到增大数据密度,最终使数据的存储空间减少的技术。数据压缩在文件存储和分布式系统领域有着十分广泛的应用。数据压缩也代表着尺寸媒介容量的增大和网络带宽的扩展。

二十一、Hash函数

Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。关于hash表的详细阐述,请参考此篇文章:十一、从头到尾彻底解析Hash表算法。

二十二、Dynamic Programming(动态规划)。关于动态规划的粗略介绍,请参考此文:

三、dynamic programming。

二十三、堆排序算法。

堆排序算法作为一种快速稳定的算法,其平均时间复杂度(最坏也为)O(n*lgn)。当然,在实际应用中,一个实现的好的快速排序算法仍然要优于堆排序算法。不过,堆数据结构还可以作为高效的优先级队列。对堆排序算法作简单了解,可参考这:堆排序算法。

二十四、递归与回溯算法。此俩个算法,相信各位比较熟悉,在此不做赘述。

二十五、最长公共子序列

最长公共子序列,英文缩写为LCS(Longest Common Subsequence)。其定义是,一个数列 S ,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。

动态规划的一个计算最长公共子序列的方法如下:

以两个序列 X、Y 为例子:

设有二维数组 f[i][j] 表示 X 的 i 位和 Y 的 j 位之前的最长公共子序列的长度,则有:

f[1][1] = same(1,1)

f[i][j] = max{f[i-1][j-1]+same(i,j),f[i-1][j],f[i][j-1]}

其中,same(a,b)当 X 的第 a 位与 Y 的第 b 位完全相同时为“1”,否则为“0”。

此时,f[i][j]中最大的数便是 X 和 Y 的最长公共子序列的长度,依据该数组回溯,便可找出最长公共子序列。

该算法的空间、时间复杂度均为O(n2),经过优化后,空间复杂度可为O(n),时间复杂度为O(nlogn)。更多详情,参见之前写的一篇拙文(不过,鉴于写的糟,日后会重写):

三、dynamic programming。

二十六、红黑树的算法与实现

关于红黑树,linux内核中有实现,本BLOG内也已经写了4篇红黑树系列的文章。详情,请参考:五(续)、教你透彻了解红黑树。

二十七、A*搜寻算法。

相对于BFS、Dijkstra 等算法,A*搜寻算法作为一种高效的最短路径搜索算法,如今,已得到日益广泛的应用。初步了解A*搜寻算法的高效及与其它最短路径算法的比较,请参考此文:一(续)、A*,Dijkstra,BFS算法性能比较及A*算法的应用。

二十八、图像特征提取与匹配之SIFT算法

sift,尺度不变特征转换,是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由 David Lowe 在19xx年所发表,20xx年完善总结。关于此算法,请参考如下,粗略介绍:九、图像特征提取与匹配之SIFT算法,利用第三方库编译过程:九(续)、sift算法的编译与实现,c语言一步一步实现sift算法:九之再续:一步一步用c语言实现sift算法、上,及九之再续:教你一步一步用c语言实现sift算法、下。

更多精彩日志、、、

二十世纪最伟大的十大算法!!数学软件计算机必看!~

/blog/255008649/717615501?frommyblog#nogo 对于学软件计算机的影响最大的、不可不读的那些书、、、

/blog/255008649/717580190?from=fanyeOld 微软、google、雅虎、百度等各大著名公司的经典面试题!保证搞晕你!! /blog/255008649/716182723?frommyblog 一个优秀程序员的成功之道:15个不可忽视的编程好习惯!!~

更多相关推荐:
8-回顾探月史上的经典语录

8-回顾探月史上的经典语录,内容附图。

经典语录20xx大全

经典语录20xx大全励志语录1心灵有家生命才有路2漂泊不等于自由3创伤是成熟的捷径4人在孤独时最能找到真实的自己5生活简单就迷人人心简单就幸福6学会简单其实不简单得失随缘尘间有两苦一是得不到之苦二是钟情之苦在你...

20xx经典语录

一励志语录1心灵有家生命才有路2漂泊不等于自由3创伤是成熟的捷径4人在孤独时最能找到真实的自己5生活简单就迷人人心简单就幸福6学会简单其实不简单二得失随缘尘间有两苦一是得不到之苦二是钟情之苦在你付诸努力的前提下...

经典语录

你羡慕别人月薪几万却不知他日日加班到深夜的辛苦你羡慕别人说走就走到处游玩的自由却不知他为这份自由放弃的东西一切都有代价无论是财富事业爱情还是自由别人永远是别人别处永远在别处等你走过去你现在身处的地方又会成为你的...

经典语录

1一见钟情钟的不是情是脸2过着八戒的生活却想要悟空的身材3一场戏累坏了小丑笑坏了观众4小姐不好意思这个男人是我的请你管好自己的大腿和春心5你瘦的时候在我心里后来胖了卡在里面出不来了6我要嫁的不是王子而是把我当公...

八个字的人生

八个字的人生勤正坦深创韧情喜勤爱劳动眼勤耳勤手勤脑勤五官四肢都勤一个人只有勤劳才能有所作为正正直正道直行正直是大聪明也是大道德坦率真说真话做真事就是待人坦诚深研而究之探求本质创有创新的强烈欲望和兴趣要独立思考反...

各种名人经典语录

俞敏洪经典语录1不要听信身边人的话大一不谈恋爱好的女孩子就被别人都挑走了想想刚上大一就耐不住寂寞受不住诱惑而去谈恋爱的女孩子值得自己去追吗大学里可以有一场爱情可是不要固执地认为刚上大一就必须要谈恋爱他这一生就基...

50位营销高手的经典语录

1牛根生职务蒙牛集团董事长及总裁牛氏语录要想把蒙牛从内蒙古卖到海南岛这个忙只有中央电视台可以帮助你2叶莺职务柯达公司全球副总裁叶氏语录我们从没有任何理由和丝毫的意念把乐凯吃掉如果中国没有乐凯我们还要制造一个乐凯...

经典名言

道德经经典名言35则令人惊叹的祖先智慧道德经又称老子五千言老子五千文是中国古代先秦诸子分家前的一部著作为其时诸子所共仰是春秋时期老子即李耳所作的哲学著作道德经这部神奇宝典被誉为万经之王是中国历史上最伟大的名著之...

经典语录

明明不是陌生人却装旳比陌生人还陌生不要拿过去的记忆来折磨现在的自己分手时别和我说不合适我TM火星人啊和地球人不合适人生烦恼就12个字放不下想不开看不透忘不了很多人闯进你的生活只是为了给你上一课然后转身离开小时候...

一句话经典语录10

如果不去遍历世界我们就不知道什么是我们精神和情感的寄托但我们一旦遍历了世界却发现我们再也无法回到那美好的地方去了当我们开始寻求我们就已经失去而我们不开始寻求我们根本无法知道自己身边的一切是如此可贵

20xx年高考作文素材汪国真120个经典诗文语录

20xx年高考作文素材汪国真120个经典诗文语录20xx年4月26日汪国真病逝但是他还留给我们很多很多的励志名句盘点汪国真写过的那些经典诗文和语录1在这个年龄什么都值得记忆无论哪一个季节走来都是难忘的花期在这个...

8个字的经典语录(1篇)