08 2021 档案
摘要:哈希函数的设计 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构 看下面的一组数据,如果是用红黑二叉树进行存储,性能在O(longn),但是如果将这些数字直接放到内存中,比如这组数据中最大的是940,那就开辟一个940的大小的内存,每个数字都在
阅读全文
摘要:左倾红黑树 红黑树也分为左倾红黑树,右倾红黑树,AA树 。 下面都是按照左倾红黑树来进行讲解,其实红色节点是左连接还是右连接,还是左右孩子节点都是红色节点都属于红黑树,下面那些定义只是针对于左倾红黑树来说的。 一般的,红黑树,满足以下性质,即只有满足以下全部性质的树,我们才称之为红黑树:1)每个结点
阅读全文
摘要:1.我们知道二叉树对于有序的一个数组处理起来性能比较差,可以通过平衡二叉树来解决,也称之为红黑树。在此之前先看一下2-3查找树 2-3查找树 下图中之所以将75和70放在一起是为了实现二叉树的平衡,这样在放入75之后,树的高度也是不变的。这样70原本是2节点的,现在变为3节点。 下面是各种情况下根据
阅读全文
摘要:二叉查找树 定义:树是n(n>=0)个节点的有限集。二叉树是另一种树型结构,特点是每个节点最多有2个子节点,并且二叉树的子树有左右之分。 看上图,比如添加2节点的时候,发现2比3小,所以放到左侧树中,又发现比1大,所以最终在1的右节点处。 创建一个二叉查找树的类: /// <summary> ///
阅读全文
摘要:1. 代码实现: /// <summary> /// 递归求阶乘 /// </summary> /// <param name="n"></param> /// <returns></returns> public static int Func(int n) { if (n == 1) { ret
阅读全文
摘要:1.arr1代表超市会员的ID,arr2代表到店的客户的ID,现在想要知道到店的客户中哪些不是会员,好安排,可以使用二分查找法。使用二分法的前提是对查找表做排序。 下面简单介绍了二分查找法的原理:比如指针 l 和 r分别指向查找表的第一个关键字和最后一个关键字,指针 mid 指向处于 l和 r指针中
阅读全文
摘要:使用代码实现自定义的集合类 #region 链表类 public class MyLinkedList<T> { //当前链表类记录这个链表的头部类 private Node head; //链表的节点数量 private int N; public MyLinkedList() { N = 0;
阅读全文
摘要:栈:是一种先进后出的线性表,只能在栈顶(表尾)进行插入删除操作。 数组栈 通过下面代码可以看出来,栈只是用了动态数组的其中几个方法,只能在尾部进行添加删除操作,是功能受限一种数组结构。所以只能在栈顶进栈顶出。 namespace DataStructure { /// <summary> /// 定
阅读全文
摘要:队列可以通过数组和链表来实现, 就看内置的栈和队列类是用哪种方式实现了。 队列:是一种先进先出的线性表,在队头删除元素(出队),在队尾添加元素(入队) 线性表: 是n个数据元素的有限序列,是连续的。 这也是一个例子 下面是数组队列实现原理: #region 数组队列 /// <summary> //
阅读全文
摘要:引用B站离忧夏天的视频 1.从动态数组的原理中我们知道,就算是使用动态数组,我们也还是未能完全利用全部的空间,所以可以使用链表实现。 数组链表区别 从上图我们可以看出,数组在查询数据方面要比链表更快速,可以通过索引快速查询,但是链表不行,比如我要找3节点,就必须知道2节点,根据2节点找到下一节点3,
阅读全文
摘要:1.静态数组是不可以更改数组长度的 2.动态数据组:ArrayList,List(泛型)。动态数组本质上就是数组,是由静态数组封装的一些扩容能力。 下面看一下动态数组的底层实现原理,并创建属于自己的动态数组, public class MyArray { //设置私有,防止用户私自查看更改。 pri
阅读全文
摘要:1、Server.Transfer - 用于把处理的控制权从一个页面转移到另一个页面,在转移的过程中,没有离开服务器,内部控件(如:request, session 等)的保存的信息不变,因此,你能从页面 A 跳到页面 B 而不会丢失页面 A 中收集的用户提交信息。此外,在转移的过程中,浏览器的 U
阅读全文
摘要:1.lambda表达式是匿名函数的一个变体,一开始是为了委托服务的,后面就千变万化了。lambda表达式其实就是一个匿名方法。 public class MyLambda { public delegate void NoReturnNoPara(); public delegate void No
阅读全文
摘要:泛型方法就是一个方法能满足不同类型的方法。 泛型接口就是一个能满足不同类型需求的接口。 泛型委托就是一个能满足不同类型需求的委托。 1.object是所有类的基类,所以也可以实现和泛型一样的功能(比如接收参数的时候可以接收任何类型的参数),但是使用object存在2个缺陷 (1)类型安全问题 (2)
阅读全文