一文带你认识30个重要的数据结构和算法

栏目:资讯发布:2023-09-22浏览:5收藏

一文带你认识30个重要的数据结构和算法,第1张

数组是最简单也是最常见的数据结构。它们的特点是可以通过索引(位置)轻松访问元素。

它们是做什么用的?

想象一下有一排剧院椅。每把椅子都分配了一个位置(从左到右),因此每个观众都会从他将要坐的椅子上分配一个号码。这是一个数组。将问题扩展到整个剧院(椅子的行和列),您将拥有一个二维数组(矩阵)。

特性

链表是线性数据结构,就像数组一样。链表和数组的主要区别在于链表的元素不存储在连续的内存位置。它由节点组成——实体存储当前元素的值和下一个元素的地址引用。这样,元素通过指针链接。

它们是做什么用的?

链表的一个相关应用是浏览器的上一页和下一页的实现。双链表是存储用户搜索显示的页面的完美数据结构。

特性

堆栈是一种抽象数据类型,它形式化了受限访问集合的概念。该限制遵循 LIFO(后进先出)规则。因此,添加到堆栈中的最后一个元素是您从中删除的第一个元素。

堆栈可以使用数组或链表来实现。

它们是做什么用的?

现实生活中最常见的例子是在食堂中将盘子叠放在一起。位于顶部的板首先被移除。放置在最底部的盘子是在堆栈中保留时间最长的盘子。

堆栈最有用的一种情况是您需要获取给定元素的相反顺序。只需将它们全部推入堆栈,然后弹出它们。

另一个有趣的应用是有效括号问题。给定一串括号,您可以使用堆栈检查它们是否匹配。

特性

队列是受限访问集合中的另一种数据类型,就像前面讨论的堆栈一样。主要区别在于队列是按照FIFO(先进先出)模型组织的:队列中第一个插入的元素是第一个被移除的元素。队列可以使用固定长度的数组、循环数组或链表来实现。

它们是做什么用的?

这种抽象数据类型 (ADT) 的最佳用途当然是模拟现实生活中的队列。例如,在呼叫中心应用程序中,队列用于保存等待从顾问那里获得帮助的客户——这些客户应该按照他们呼叫的顺序获得帮助。

一种特殊且非常重要的队列类型是优先级队列。元素根据与它们关联的“优先级”被引入队列:具有最高优先级的元素首先被引入队列。这个 ADT 在许多图算法(Dijkstra 算法、BFS、Prim 算法、霍夫曼编码 )中是必不可少的。它是使用堆实现的。

另一种特殊类型的队列是deque 队列(双关语它的发音是“deck”)。可以从队列的两端插入/删除元素。

特性

Maps (dictionaries)是包含键集合和值集合的抽象数据类型。每个键都有一个与之关联的值。

哈希表是一种特殊类型的映射。它使用散列函数生成一个散列码,放入一个桶或槽数组:键被散列,结果散列指示值的存储位置。

最常见的散列函数(在众多散列函数中)是模常数函数。例如,如果常量是 6,则键 x 的值是x%6。

理想情况下,散列函数会将每个键分配给一个唯一的桶,但他们的大多数设计都采用了不完善的函数,这可能会导致具有相同生成值的键之间发生冲突。这种碰撞总是以某种方式适应的。

它们是做什么用的?

Maps 最著名的应用是语言词典。语言中的每个词都为其指定了定义。它是使用有序映射实现的(其键按字母顺序排列)。

通讯录也是一张Map。每个名字都有一个分配给它的电话号码。

另一个有用的应用是值的标准化。假设我们要为一天中的每一分钟(24 小时 = 1440 分钟)分配一个从 0 到 1439 的索引。哈希函数将为h(x) = x小时60+x分钟。

特性

术语:

因为maps 是使用自平衡红黑树实现的(文章后面会解释),所以所有操作都在 O(log n) 内完成;所有哈希表操作都是常量。

图是表示一对两个集合的非线性数据结构:G={V, E},其中 V 是顶点(节点)的集合,而 E 是边(箭头)的集合。节点是由边互连的值 - 描述两个节点之间的依赖关系(有时与成本/距离相关联)的线。

图有两种主要类型:有向图和无向图。在无向图中,边(x, y)在两个方向上都可用:(x, y)和(y, x)。在有向图中,边(x, y)称为箭头,方向由其名称中顶点的顺序给出:箭头(x, y)与箭头(y, x) 不同。

它们是做什么用的?

特性

图论是一个广阔的领域,但我们将重点介绍一些最知名的概念:

一棵树是一个无向图,在连通性方面最小(如果我们消除一条边,图将不再连接)和在无环方面最大(如果我们添加一条边,图将不再是无环的)。所以任何无环连通无向图都是一棵树,但为了简单起见,我们将有根树称为树。

根是一个固定节点,它确定树中边的方向,所以这就是一切“开始”的地方。叶子是树的终端节点——这就是一切“结束”的地方。

一个顶点的孩子是它下面的事件顶点。一个顶点可以有多个子节点。一个顶点的父节点是它上面的事件顶点——它是唯一的。

它们是做什么用的?

我们在任何需要描绘层次结构的时候都使用树。我们自己的家谱树就是一个完美的例子。你最古老的祖先是树的根。最年轻的一代代表叶子的集合。

树也可以代表你工作的公司中的上下级关系。这样您就可以找出谁是您的上级以及您应该管理谁。

特性

二叉树是一种特殊类型的树:每个顶点最多可以有两个子节点。在严格二叉树中,除了叶子之外,每个节点都有两个孩子。具有 n 层的完整二叉树具有所有2ⁿ-1 个可能的节点。

二叉搜索树是一棵二叉树,其中节点的值属于一个完全有序的集合——任何任意选择的节点的值都大于左子树中的所有值,而小于右子树中的所有值。

它们是做什么用的?

BT 的一项重要应用是逻辑表达式的表示和评估。每个表达式都可以分解为变量/常量和运算符。这种表达式书写方法称为逆波兰表示法 (RPN)。这样,它们就可以形成一个二叉树,其中内部节点是运算符,叶子是变量/常量——它被称为抽象语法树(AST)。

BST 经常使用,因为它们可以快速搜索键属性。AVL 树、红黑树、有序集和映射是使用 BST 实现的。

特性

BST 有三种类型的 DFS 遍历:

所有这些类型的树都是自平衡二叉搜索树。不同之处在于它们以对数时间平衡高度的方式。

AVL 树在每次插入/删除后都是自平衡的,因为节点的左子树和右子树的高度之间的模块差异最大为 1。 AVL 以其发明者的名字命名:Adelson-Velsky 和 Landis。

在红黑树中,每个节点存储一个额外的代表颜色的位,用于确保每次插入/删除操作后的平衡。

在 Splay 树中,最近访问的节点可以快速再次访问,因此任何操作的摊销时间复杂度仍然是 O(log n)。

它们是做什么用的?

AVL 似乎是数据库理论中最好的数据结构。

RBT(红黑树) 用于组织可比较的数据片段,例如文本片段或数字。在 Java 8 版本中,HashMap 是使用 RBT 实现的。计算几何和函数式编程中的数据结构也是用 RBT 构建的。

在 Windows NT 中(在虚拟内存、网络和文件系统代码中),Splay 树用于缓存、内存分配器、垃圾收集器、数据压缩、绳索(替换用于长文本字符串的字符串)。

特性

最小堆是一棵二叉树,其中每个节点的值都大于或等于其父节点的值:val[par[x]]

对于一般的家谱树(一般的多叉树)来说,我们可以很清楚的看出层次关系,树的层数表示代数(一共多少代人),树的最后一层表示最后一代人,由于多叉链表法表示的不方便,因此被迫无奈采用孩子兄弟表示法(二叉链表法)

假设我的家谱是这样的:

           

转换成孩子兄弟表示法后是这样的:

           

      我们要做的是:这时我们要找有多少代人,以及最后以一代人出来。

     如果根据第一个图来说找代数就是树的高度,最后一代人就是树的最后一层,二叉链表法中却不如第一个图来的直观,但是只要把握二叉链表法的本质还是很清晰的,根据孩子兄弟表示法的特性,(看二叉链表法的图)结点3的左子树保存的是其孩子,结点3的右子树保存的是其堂兄弟(对照第一个图来看)。假设我们每一个节点都有一个变量用来存储它是第几代的,那么从结点1开始,我们要找结点10是第几代的话,应该这么做:结点1是第一代,然后经过结点5是第二袋,然后看到结点10是第三代。因为第i个结点的左子树是他的孩子,既然是孩子,代数必须+1,而右子树是和第i结点同辈份的(堂兄弟),因此不能加1。本质来说就是往左走代数+1,向右走代数不变。这就是这题目的思路,通过这个方法你就可以知道有多少代人了,且每个节点都有保存了代数信息(用变量存起来了),再次遍历树把最后一代的结点输出即可。清晰了吗?清晰了我就开始写程序。

GIS就业方向

方向1:开发工程师

毕业后要找工作的朋友,得考虑下有哪些工作和自己喜欢什么工作。由于目前GIS就业市场的形势是供大于求、僧多粥少,因此更多的还是考虑市场需求比较好。

据《GIS开发者》第六期的《中国GIS人才生存状况调查报告》一文,“在众多GIS单位中,其主营业务大多是工程开发或软件研发和销售。从事数据处理的单位比例也达18%”,“单位对人才需求最多的是资深开发人员,其次是程序员和项目经理。由此也可看出,如果想从事GIS行业,较强的编程能力才是‘通行证’”。打开各大论坛的求职招聘版,也可以看到几乎每个单位都招开发人员。这里找了很典型的一则招聘启事:

职位:GIS开发工程师

要求:熟练掌握C#/C++使用;熟练掌握ArcGIS Engine 90以上版本的使用;有C#/C++结合Engine项目经验者优先;

这则启事简单明了,一共三点要求:语言、组件、经验。客观地说,对应聘者的要求还是很低的,我想一个普通的高中毕业生认真地自学一年应该能够胜任。然而,按部就班的“优秀”本科毕业生却未必能满足这些要求。第一,学校基本上只教VB和C这两门基础的教学语言,目标是过二级、三级,然而考级对编程的要求与工作中对编程的要求完全是两码事,不是一个方向。第二,曾经风靡的两种GIS组件MapX和MO正在退出社会舞台,然而在课堂上仍然是主打。第三,有开发经验的学生太少了,很多学校完全不教二次开发,即使教,对学生的要求也不高,实现简单的浏览、查询就行了,这根本算不上项目经验。因此,想从事开发工作的朋友们,必须在校园里开展自助学习。个人认为,认认真真地参加一次ESRI或超图办的开发组比赛,就可以达到普通公司的要求了。下面再看一则要求比较高的:

1、计算机或GIS专业本科及以上学历;

2、熟练掌握C/C++语言、Java、JSP、C#等语言,熟悉VC++、JBuilder编程环境;

3、熟悉设计模式、UML,能用Rose等建模工具构建系统模型;

4、熟练掌握Supermap、Arcgis等主流GIS平台及二次开发技术,有GIS软件平台底层开发背景,熟悉GIS常用算法, 对Web Gis系统的技术架构、性能、安全等有较深刻的理解;

5、熟悉SQLServer、Oracle数据库开发。

6、有良好的团队精神,有良好的交流与沟通能力,具有跨平台软件开发或嵌入式软件开发经验者优先;

这份工作网友们有说工资少于5000没人干的,也有说这种高人没有10K是供不起的。但其实认真自学四年,满足这些要求是绰绰有余的。用一年自学计算机基础、语言(除了VB或C,C#、C++、Java、VBNET四者应当有一)、网络开发,用一学期学习商业GIS桌面软件和组件开发(建议参加比赛),用一学期学大型数据库和分布式系统,用一学期学软件工程、系统分析与架构,用一年学习开源GIS软件并练习底层开发(比二次开发技术含量高,钻研能力强的人可以走这条路。需学习算法与数据结构、计算机图形学、数字图像处理。很多学校开了这些课,但一是跟GIS结合不紧,二是实践不够以至于理论不能掌握。),用一学期了解跨平台、嵌入式、虚拟现实等前沿技术。

肯定有人会指责,这样的规划一是过于偏重IT而轻视地学和数学,二是太理想化没人能学出来,三是要学校还有什么用。正常来说,应该有少数人会冷嘲热讽或破口大骂的。下面我“未雨绸缪”,提前一一作答。第一,上文只是对想从事开发工作的人说的,对开发人员来说,计算机技术是最重要的。对这部分GISer,只要能把G的基本知识和发散思维引入IS,就非常好了,术业有专攻嘛。至于其它的路,下文还有探讨。第二,世上无难事,为之,则难者亦易矣,不为,则易者亦难矣,对于毅力匮乏、眼高手低、光说不练的人而言,这的确太理想化了。另外,上文所列的内容只是指引方向,并不是要求全部掌握,而且学校毕竟不是工作,不用每样都学很深。第三,对于想走这一方向的人来说,除了学位证书那一纸遮羞布,学校确实用处不大。从课程设置和教学内容来看,大多数学校似乎都是想培养科研人才的——当然培养方式还有待改进。不只是GIS专业,很多学科都存在理论脱离实践、教学脱离实际、校园脱离社会的问题,何必盲从呢?成绩可以光耀门楣,可以赚取奖金,就是不能给你带来一份好的工作——你看拿家GIS公司的招聘要求里写了“成绩优异者优先录取”?当然,在大家能力都不行的情况下,成绩好的便成了矮个里的将军。

小结一下,这条路是通向开发工程师的,发展得好可以成为项目经理吧。这里需要补充的是,开发并不仅仅是指编程,需求分析和软件架构也是开发的重要组成部分,这些工作不做好,编程的时候就会比较乱,而且系统的健壮性也不容易好。不愿意编程的人,比如说女生,可以考虑往这方向走,不过最好对GIS编程也有一定接触。

方向2:三维工程师

其实也应该属于开发,只是觉得很多初学者对三维比较感兴趣,因此单列出来。还是先看一则招聘启事吧:

职位描述: 在高级开发工程师/系统工程师指导下进行地学三维相关模块的设计与开发工作;

职位要求:

1计算机、地理信息系统、应用数学或者相关专业本科以上学历;

2掌握VC开发技巧,熟悉c/c++编程,对OpenGL或者D3D技术有一定了解,;

3英文水平良好,阅读英文技术资料没有障碍;

4较强的逻辑分析能力, 学习能力, 创新能力和团队协作能力;

5有三维仿真、游戏引擎开发经验者优先

这应该出乎很多初学者的意料:搞三维也得会编程的!没错,三维开发可以简单地分为两块:建模和编程。用GIS软件建立的地面模型和用3DMAX等软件建立的地物模型是静止的,要对他们进行动态控制需要编程。举个小例子,桥梁每时每刻都因受到风和汽车的力而发生形变,要想了解形变的情况,可以在桥梁上装上若干GPS即时的获取位置信息,同时用软件建立桥梁模型,通过编程使得GPS数据和桥梁模型关联起来并加以夸张,这样每当GPS数据发生了改变,模型上的桥梁也就发生相应的可观察的形变。

要想从事这种工作,在计算机方面要自学3DMAX或MAYA,在编程上要深入学习用C++进行OpenGL技术开发,在GIS上要注重学习DEM和虚拟现实的内容。这些课堂上基本都是很少涉及的,必须自学。

方向3:数据工程师

数据是GIS的血液,一个项目很大一部分资金都是注入到数据的采集、生产和维护中的,因此这也是一个比较大的方向。还是先看一则招聘启事:

职位要求:

1相关专业本科毕业,应届也可

2有良好的专业知识,熟悉ARCGIS软件操作

3有地图数字化方面工作经验,有数据库相关操作经验

4对GIS工作抱有热情,有良好的团队合作精神

岗位描述:GIS数据的生产和维护

我的感觉,这是一个很辛苦的、技术含量最低的GIS工作。前些时候去江苏省基础地理信息中心参观,看到数据处理的地方就像一个工厂车间,很宽敞,一排排的电脑,大家就带着立体镜根据测量图纸在ArcGIS中的遥感影像立体像对上矢量化,录入到空间数据库中。矢量化是我们的拿手好戏,这里就不赘述了。这种工作,一般中专生培训培训也能做。

再有就是遥感和航测数据处理,学过遥感和摄影测量课程,会用ERDAS或ENVI或ER MAPPER,以及VirtuoZO就行。

当然,随着GPS导航的兴起,导航数据和电子地图成为了一个热点。这一方面我没有接触过,因此不能提出看法。可以搜索一下做导航的一些公司的招

聘启事。

方向4:销售/市场/企划

越来越讲究工作经验的要求。我了解的不多。

方向5:软件测试/技术支持

小公司能专门设置这样的职位么?

方向6:项目管理/文档编写

文字功底扎实,专业知识全面,洞悉行业。

方向7:提供解决方案或辅助决策服务

不开发系统,只是用桌面软件进行空间分析,为客户提供解决方案或辅助决策的服务。比如说,某超市要选址,需要特地做个系统么?没必要,在ArcMap中用VBA写程序,得出最优解,写份报告就行了。

方向8:转到应用行业

在高校中走方向7的人,有很大一部分就转到了相关应用领域工作,把GIS作为处理该领域的一种工具,而不再做一个纯的GISer。比如说搞土地应用的进了国土局,搞林业应用的进了林业局,搞水利应用的进了水利局……毕竟,如果把GIS作为一种技术,那她只有在广阔的应用领域中才能充分展现自己的魅力,需要有学GIS的人专注于把这门技术深入地应用到某一个领域中。

我导师曾说过:当GIS被融入IT主流时,是幸运也是不幸。对那些无法在IT的浪潮中辗转腾挪、上下翻飞、搏激弄潮的朋友们而言,不关注技术本身,转而投身到应用中,或许是一个明智的选择。对那些无法在IT的浪潮中辗转腾挪、上下翻飞、搏激弄潮的朋友们而言,不关注技术本身,转而投身到应用中,或许是一个明智的选择。对那些无法在IT的浪潮中辗转腾挪、上下翻飞、搏激弄潮的朋友们而言,不关注技术本身,转而投身到应用中,或许是一个明智的选择。

不错,大城市的这个局那个局很少招本科生了(有关系的不算),那么小地方呢?或是其它领域呢?为什么不能到GIS还没有涉足到的区域去开疆拓土呢?与其他人相比,你具有非专业优势。胡乱打个比方,同样做村长,你至少比学行政管理、只会纸上谈兵的毕业生多了一个高科技手段,手握盗版软件的你可以用GIS来科学地管理村子。至于怎么应用,我一时半会吹不出来,但人类80%的信息都和空间位置有关,肯定有你能挖掘出来的东西,当你带着GIS的思维去工作,只要是有心人,肯定能在工作中发现用的到GIS的地方,只有想不到的,没有做不到的。用了之后,只要有效果(或者吹出效果),不就成了建设新农村和创新型国家的典型?

GIS需要我们推广!

------------------------------全中国GIS初学者们,团结起来!------------------------

方向9:升学

越来越多的人考研究生,据《GIS开发者》第七期的《要不要考研?考什么样的研?》一文,绝大部分是为了逃避就业压力。可是研究生毕业也要工作呀,无非也就是上面那几条路。大家知道现在的研究生教育也不咋的,有些人是“做”几篇没意义的论文毕业了事,与当年本科毕业的同学相比,多了一层遮羞布,却少了三年工作经验。精明的企业老板是不会看重学历的,因此研究生的就业情况也不容乐观。有人这样说保研:用浪费三年时间的代价换来继续浪费三年时间的资格。当然优秀的研究生还是比本科生多一些机会,尤其是事业单位对学历还是比较看重的吧。

读研,第一年上课,第二年“自由活动”,第三年(或最后半年)做毕业论文。除了毕业论文,在读研期间还需要在期刊上发表一些论文,各个学校对论文数量和质量的要求是不一样的。剩下的时间主要是做导师的项目和自己充电。项目通常分为“纵向项目”和“横向项目”两种。纵向项目,俗称“国家给钱的”,是由政府长期设立的各类研究基金支持的项目,主攻前沿课题;而横向项目,俗称“社会给钱的”,是企业或者其他单位就某些课题委托的项目。因此这里实际上又有两条路可选:想走科研道路的,选择以纵向项目为主的导师;不想走科研道路的,选择以横向项目为主的导师。

那么GIS科研主要做什么呢?个人认为还可以分成四条路:基础理论、实现技术、深度应用和新应用。基础理论是整个学科的核心与灵魂,这里多列举几个研究方向:空间数据库的准确性研究;空间关系语言研究;空间数据的多种表达方式研究;地理信息的使用和价值研究;海量空间数据库的结构体系研究;地图制图的规范化研究;地理信息数据共享的研究;GIS中时空关系的研究;GIS和空间分析研究;法律、信息政策和空间数据库关系研究;地理信息系统的互操作研究;地理世界的规范化模式研究。再举几个实现技术的科研方向:空间决策支持系统;空间信息的可视化研究;遥感和 GIS的集成研究;GIS的用户接口研究;通过协作形成空间决策系统的研究。再举几个深度应用的科研方向:GIS在全球变化中的作用研究;在社会背景中,如何在 GIS中表达人、空间与环境的研究。至于新应用,则是让GIS技术渗透到生产生活各个方面的,比如上面提到的村长GIS,还有在《GIS初学者》第一期中《访南京师范大学学生胡雷地》一文中提到的家谱GIS。

搞基础理论估计是最底层的,也是最难的,当然只有走这条路你才有可能成为院士、科学家、行业的核心引领者和推动者。想走这条路的人,在本科期间重在打基础,尤其要有深厚的数学功底,不仅是高等数学、线性代数、概率统计,还有必要自学离散数学、数值分析、拓扑学等科目。在计算机上需要对C++、算法与数据结构、数据库原理、计算机图形学、数字图像处理有一定理解,并能熟练使用Matlab、IDL等科研常用软件。在GIS上,在有一定实践能力的基础上,更加注重对基础理论的理解,多读一些GIS书籍。到硕士研究生阶段,根据学校及导师情况大致选择自己的方向,进一步打基础。这样,在博士期间有望有所创新和突破。

搞实现技术比基础理论少一些抽象,而对计算机的要求可能更高一些,数学仍然很重要。我在书店看到过有常用算法与实现代码的书,觉得比较适合本科生钻研。

GIS只有在应用中才能体现其生命力,而深度应用最能体现GIS的强大。想走这条路的人可以在大学期间选中一两个应用方向,如物流、矿产等,多看一些GIS在该领域的应用论文。在研究生阶段,也就只专注于一个领域的应用。

我个人则希望能够在将来成为拓展GIS应用领域的人,这需要对各种技术有所认识,但不用深入钻研,更重要的是会用GIS的思想来思考问题。我用活跃的思维和火热的热情来引导学习,或许比较适合这个方向。又想起闾国年教授的话:“做学者,不做学生”。

--------------------------------自主!共进!-------------------------------------

方向10:彻底转行

实在对GIS没兴趣,不如彻底转行。要舍得放弃。但请不要辱骂GIS。

结语

本文相当于一篇需求分析,阐述了GIS学生未来的走向,并简单地谈了选择不同的路在大学期间应该分别做些什么。我知道很多人是被调剂到GIS专业的,你们也不知道自己是否喜欢这个专业,那么我建议你:合理的判断是建立在充分的阅读与思考上的。充分利用网络资源吧。

还有两句话不能不提:万事开头难;GIS对勤奋的人来说是机遇,对懒惰的人来说是噩梦。毅力匮乏是我们这一代人(当然不是指每个人)很突出的一个毛病,在这个节奏快速、物欲横流的时代,有几人能不浮躁?坚持到底就是胜利,这是最浅显也是最深刻的道理。这里引用三句诗来描述GIS学习的三个阶段(是反复循环以至无穷的),希望能对大家有所帮助:

昨夜西风凋敝处,独上高楼,望断天涯路。——在迷茫中寻路

衣带渐宽终不悔,为伊消得人憔悴。——在信念中摸黑

众里寻她千百度,蓦然回首,那人却在灯火阑珊处。——在反思中突破

姓氏起源:

祖宗:简狄

据《名贤氏族言行类稿 》以及《新唐书宰相世系表》等所载,相传上古帝的妃子中有一个叫 简狄的,因拣到一只燕子蛋,简狄吃了以后生下了契。后来契辅助大 禹治水有功,被封于商。传至商纣王时,有一庶兄名启,被封于微, 见商朝管理不好,尚书商王,商王又不听,于是出走。周武王灭商后 ,微子投奔周武王,后来他被封为宋,称宋桓公,他的儿子敖在晋国 任职,敖的孙子伯宗为晋国大夫因勇于直言遭人嫉恨而被害。他的儿子州犁逃到楚国,任楚太宰,食采钟离,他的后人于是以地名为氏或 单称钟氏。代代相传。

钟姓来源有三

1 出自子姓,为商汤的后代,以邑为氏。据《名贤氏族言行类稿》以及《新唐书宰相世系表》等所载,相传上古帝的妃子中有一个叫简狄的,因拣到一只燕子蛋,简狄吃了以后生下了契。后来契辅助大禹治水有功,被封于商。传至商纣王时,有一庶兄名启,被封于微,见商朝管理不好,尚书商王,商王又不听,于是出走。周武王灭商后,微子投奔周武王,后来他被封为宋。

至宋桓公时,宋桓公的儿子敖在晋国任职,敖的孙子伯宗为晋国大夫因勇于直言遭人嫉恨而被害。他的儿子州犁逃到楚国,任楚太宰,食采钟离,他的后人于是以地名为氏或单称钟氏。代代相传。

2 出自嬴姓,为钟离氏改钟氏。周代伯益的后人封钟离国,春秋时被楚国吞并,国人称钟离氏。是为安徽钟氏。

3 钟氏源流始于西周,康王之子子期善知音,任康王伶官,子期之孙名建,为昭王司乐大夫,昭王以建之先世采食之地钟赐姓。到东汉建公十二世孙兴甫,已延续到颖川,兴公被光武帝召拜为中郎将,敕封为关内侯,谥赠颖川公。颖川公传到四十五世维处,维处次子伯琰,自南宋绍兴年间迁居万载康乐之西,已有八百四十年。

郡望堂号:

1、颖川郡:秦王政十七年置郡。以颖水得名,治所在今河南禹县 。相当于今河南登封、宝封以东,尉氏以西,密县以南,叶县、武县 以北的地区。

2、竟陵郡:秦置郡,治所在今湖北潜江西北,西晋时封江夏郡置,治所在石城。南朝宋时相当于今湖北钟祥、天门、京山、潜江、沔 阳等地。

堂号

四德堂:春秋楚、郑交战的时候,楚国钟仪被郑国俘虏,献给了晋国。晋国公在军府见到了他,晋国公问:“那个被绑着、戴着楚国帽子的人是谁?”钟仪说:“楚国的俘虏。”景公又问:“你姓甚?”钟仪说:“我父亲是楚国的大臣。”景公命令手下的人松绑了钟离,给他琴叫他弹,他弹了一首楚国的音乐。景公又问:“楚王是一个怎样的人?”钟仪说:“王作太子的时候,有太师教导他,太监伺候他。清早起来以后,象小孩子一样玩耍;晚上睡觉。其他的我不知道。”范文子对景公说:“这个楚国俘虏真是了不起的君子呀。他不说姓名二说他父亲,这是不忘本;弹琴只弹楚国的音乐,这是不忘旧;问他君王的情况,他只说楚王小时候的事,这是无私;只说父亲是楚臣,这是表示对楚王的尊重。不忘本是仁、不忘旧是信,无私是忠,尊君是敬。他有这四德,给他的大任务必定能办得很好。”于是晋景公以对外国使臣的礼侍他,叫他回楚国谈判和平。

迁徙分布:

无论是复姓的钟离还是单姓的钟,都发源于今安徽省境内。而后,大致于汉晋之际,则以河南为其繁衍中心,其中以迁入颖川的钟氏从一开始就著称于世。后来成为全国各地钟氏的主要来源。先秦时期的钟氏,主要居住在楚国境内(今湖北、湖南一带)。从汉代开始到以后得数百年间,颖川长社一直是钟氏发展繁衍的中心。所以,许多姓书都说钟氏发源于颖川。东汉时,长社人钟皓隐居不仕,其七世孙钟雅西晋时随晋室渡江,居于建康(今江苏南京)。与此同时,钟氏还有迁居至今浙江绍兴的,钟雅的7世孙钟屿为南朝梁永嘉县丞,他的儿子钟宠为临海令,为避侯景之难徙居至南康赣县(今江西赣州市)。南朝末有钟士雄,曾为南朝陈伏波将军,史书称其为“岭南酋帅”。唐初陈元光父子奉命入闽开辟漳州,随从将佐有钟德兴,后在福建安家。唐代的钟氏还分布于今四川、山西、广东广州、安徽合肥一带。宋、元、明时期,福建的漳州、泉州、宁化等地,广东的南海、南雄、蕉岭、湖州、梅州、兴宁等地均有钟氏的聚居点。从乾隆开始,闽、粤钟氏陆续有人迁台湾,后又有人迁海外。

据台湾省文献会的调查统计,目前,钟姓是台湾的第五十一个大姓。近年来,钟姓子孙遍及台湾各地,其中以新竹最多,台北次之,嘉南地区又次之。

族谱的体例与内容

钟姓族谱,不论大族和小族,一般一部“谱”中都有“总谱”和“分谱”。总谱内容丰富、涵盖广泛。有历届谱序、开宗和源起始祖图像、源流考、迁徙考、名位考、宗规谱戒、人物传记、艺文杂志、本族盛事等等。过去的族谱还记有田园、山罔、房产、地产。分谱主要是各房各支世系,基本上是五代一个层次。每一个人的名字分前、中、后出现三次。第一次作为父亲的儿子出现在父亲名下,第二次是自己“立柱”,第三次则是作为儿子的父亲,出现在儿子“立柱”时的前面。

钟姓家谱文献目录

湖南省益阳市十修《钟氏族谱》

广西富川钟山《钟氏族谱》

《钟氏族谱》

湖南桃阳县钟氏十修族谱

江西龙南象塘钟氏十修族谱

《瑞金东关钟氏族谱》

《瑞金东关钟氏八修族谱》

浙江会稽至德堂 民国12年 (1923年)《会稽钟氏宗谱》

清光绪9年 (1883年)《谱暨钟氏宗谱》

钟姓字辈(字派)

入川钟姓近年整理了世系,定下100个字派:

“元能毓奇寿,荣钟正兴发。芳名应远兆,福大万年有。先人家道训,族众喜气洋。建勋立业旺,齐献增国强。颍川源流地,闽汀武平居。修谱乃廷凤,毅密刚察裕。子文启汝志,豪华富贵昌。亿代传祖德,功禄永安康。勤学高贤士,俊杰振伦常。继承需诗礼,吉祥同天长。”

前20个字派是钟毓灵入川时从福建带去的。二十一世至四十世,反映钟氏子孙,继承先祖好的家规宗训、道德品质教育,建功立业。四十一世至六十世,反映钟氏来自颍川,先祖入赣入闽入川,过去的族谱由钟廷风和友文之子侄毅、密、刚、察、裕五人修的,六十一世至一百世,是赞美钟察的一首诗,文字上作了一些取舍,变成字辈。

入川始祖从原籍带到四川是20个字派:

“元盛世为茂,忠训显远久。毓寿再加增,福大万年有”。

近代续修了一次族谱,新增的80个字派是:“承继业宏昌,克俭族兴旺。春催浪涛涌,廉助贤良光。择捷登科峰,学思定吉祥。濒传智慧路,永恒序安康。裕煜笃丹青,繁茂照群芳。金鹏展翅宇,鸿鹄创辉煌。功勋振五洲,仁伦流远长。德孝谦恭让,楷模后世仿”。

入湘钟姓32个字派:

“大海生金,国泰连荣,紫受龙应,祖景系廷,时朝明日,本立邦宁,道超德裕,发达文清”。芳生大洛,大洛生海南,海南生尧生,尧生生金石,金石生国兴,国兴生泰若,泰若生连芳,联芳生荣里,荣里生紫荫,紫荫生受恩,受恩生九龙。”

钟九龙一支入湘前的世系字派是:

大海生金,国泰联荣,紫受龙应,祖景系廷,时朝明日,本立邦宁,道超德裕,发达文清。后续字派为:世泽广远,敦厚继承,庆登灵瑞,秀拔奇英。

邑中钟氏第一代修谱,定下了 20个字派:

“应景善远虔,里叔永世华,仲子定懋吉,宏敷盛道观”。到清朝光绪七年(公元1881年)第七次修谱时,又定了20个字派,即:“光腾文蔚起,先德益鸿章,衍庆家声振,祥开运会长。”1948年八修族谱,再定了20个字派,即:“兴隆承国泰,英才显大邦,俊秀逢时发,崇伦必久昌。”三次修谱,定了 60个字派,现在到了30代,可见古人先贤在传承这个问题上是多么的高瞻远瞩,远见卓识。

宁都钟姓原有的老字派为:

“志仲伯叔大,宏金见文明。”后来增加了二十四个字派即:“启发圣人盛德,奇英道达世荣,贤良君臣交泰,永享高福昌隆。” 1995年第十次修族谱,再增加20个字派,即:“承先继前裕,光腾蔚钰国,仕廉杰卓誉,令正庆昭传。”

宝溪堂首修族谱定下了 40个字派:

英饶士可思,仲端世高应,承汝元享象,问学振邦良。瑞起荣宗彦,廷有国华扬。祥开家自茂,敬祖久诗昌。

湖北钟姓早期的字派是:

“清溪五世下,应庆谷智淑。一廷仕玉成,文才远天收。”后续的字派是:“本友声大志,道显仰昌期。德以敦修懋,行田植定基。荣名归盛世,美誉重熙时。丕显辉煌启,贤才作育宜。秉义建邦治,尊贤立国长。昂和延寿庆,吉善有绳良。诗书扬名远,尚武功辉煌,厚培颍川泽,奕叶万年昌”。

益阳钟姓宋代钟芳曾定下32个字派,后来在清雍正年间三修时又增32个字派:

“世泽广远,敦厚继承,庆登灵瑞,秀拔奇英,肇祥有自,锡福维钧,宏功允著,荫翼昌义”。现在已发展到“敦”字辈。后来的几次修谱,他们又续作了40个字派,连前两次合104个字派。新续的40个字派是:“敷志能昭敬,方声定启贤。典章隆代守,孝友合家传。修业希名士,怀才会盛年。高科逢上选,光显焕宗先。”

兴国县为钟姓接系“锁定”的120个字派:

祖德绵延远,孙支似绩长。传家惟孝友,继世有文章。懋聩昭秦汉,丰功耀晋唐。

调元思越国,赞化仰平阳。智勇宏谋济,明良庶事康。勋猷标宇宙,品望重乡邦。

正直清仁让,端方笃敬庄。修齐崇治道,节义迪前光。允协捞谦吉,旋占祝履祥。

融和联族谊,谆睦叙伦常。宗法千秋在,嗣徽万载芳。颍川垂厚泽,奕叶庆荣昌。

枝盖湖广钟湛裔字辈谱:

“清溪五世下,应庆谷智淑。一廷仕玉成,文才远天收。”

江西靖安钟氏的字辈谱是:

子孙永昌,宗先福长。顺龙有庆,发荣万方。

民国十二年(1923年)钟歆久纂的《钟氏宗谱》中载,江苏靖江钟姓一支字辈为:

成宪宾廷,锡泽树勋,荣永休昌,允降祥瑞。

明朝成化五年(1469年),江西瑞金钟氏第一代修谱,定下了20个字派。到清朝光绪七年(1881年)第七次修谱,又定下了 20个字辈。1948年八修族谱,再定了20个字辈。:

应景善远虔,里叔允世华,仲子定懋吉,宏敷盛道观。光腾文蔚起,先德益鸿章,衍庆家声振,祥开运会长。兴隆承国泰,英才显大邦, 俊秀逢时发,崇伦必久昌。

浙江鄞县新江钟氏的字辈:

一德贻昭穆,家齐全百福。懿修法圣功,大雅崇儒月良。伦克尚尊亲,

行能敦作肃。学高世可经,道裕容咸淑。祖述得英材,孙绳勤茂毓。

嘉谟永乃传,吉兆承天禄。

四川内江钟氏瑞龄公支的字辈:

高山德俊,世守传芳。元会衍庆,贻呈有光。

兰胜桂发,凤兆麟祥。嘉乐申锡,泰华永章。

湖南平江颍川堂钟氏的字辈:

恢振连科甲,承修定炽昌。 魁星高北斗,名士耀南唐。 礼乐家声远,

诗书世德长。文章辉上国,富贵永传芳。

湖南钟湛支的字派:

清溪五世下,应庆谷智淑。一廷仕玉成,文才远天收。

湖南醴陵醴东汾石钟氏的字派:

正明裕文瑞,开发绍家声。 为善培根本,

敦书道义崇。 英贤钦继起,万世庆昌隆。

湖南浏阳颍川堂钟氏的字派:

四维六念万,日明国益青。源伯锡文福,传书受善名。 学优昭世训,

道德振家声。继绍期宏久,贤能定可成。

四川江津钟氏字辈:

泽永昭崇德,源长立世芳。光前绳祖武,裕后发祯祥。

浙江遂昌高棠钟氏字辈:

国成世泰,邦奠朝熙。 德建功扬,恩崇庆锡。

湖南湘乡钟氏字辈:

昌大文明,贤才蔚兴。羽仪圣朝,光辅紫震。诗书继美,

先泽维新。科第承远,湘宁长隆。

参考资料:

http://baikebaiducom/view/600745htm http://zhidaobaiducom/question/7107174html

很难吗?树结构哦。看你数据结构学的怎么样呗。呵呵,我先想到的数据结构是双亲孩子表示法,当然查找关系的时候就要进行一些条件设置,比如祖孙的关系数大于父子的关系数2,兄弟拥有相同的双亲,堂兄弟的双亲是兄弟,回溯到相同的祖先结点则有共同的祖先咯。

一文带你认识30个重要的数据结构和算法

数组是最简单也是最常见的数据结构。它们的特点是可以通过索引(位置)轻松访问元素。 它们是做什么用的? 想象一下有一排...
点击下载
热门文章
    确认删除?
    回到顶部