看了很多讲B树和B+树的文章,大多都是围绕各自的特性讲的,第一,树中每个结点最多含有m个孩子(m>=2);第二,……我也是从这些文章里弄懂了各种树的联系与区别,要真写,我可能还不如人家写得好。所以就在这里简明扼要的用几张图记录一下主要区别吧。    为了便于说明,我们先定义一条数据记录为一个二元组[key,data],key为记录的键值,key唯一;data为数据记录除key外的数据。   B树   每个节点都存储key和data,所有节点组成这棵树,并且…

2021年2月28日 0条评论 9点热度 阅读全文

  看了很多讲B树和B+树的文章,大多都是围绕各自的特性讲的,第一,树中每个结点最多含有m个孩子(m>=2);第二,……我也是从这些文章里弄懂了各种树的联系与区别,要真写,我可能还不如人家写得好。所以就在这里简明扼要的用几张图记录一下主要区别吧。    为了便于说明,我们先定义一条数据记录为一个二元组[key,data],key为记录的键值,key唯一;data为数据记录除key外的数据。   B树   每个节点都存储key和data,所有节点组成这棵树,并且…

2021年2月28日 0条评论 17点热度 阅读全文

链表及基本操作 定义 基本操作 1. 创建单链表 2. 插入节点 3. 删除节点 4. 反转链表 5. 倒数第K个节点 6. 是否有环 本文所述均为单向链表。 ps:更多数据结构知识详见: 常见数组结构与算法 定义 链表:由一系列结点(链表中每一个元素称为结点)组成,每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 typedef struct ListNode{ int val; struct ListNode* next; ListNode(int x) : val(x),…

2019年6月16日 0条评论 1点热度 阅读全文

          五大经典算法分为 1、分治法:把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。 2、动态规划法:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。 3、贪心算法:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是…

2018年8月21日 0条评论 4点热度 阅读全文