
C#数据结构与算法 学习笔记
来自https://www.bilibili.com/video/BV1gE41157pC?p=1
Mr_Tfos
这个作者很懒,什么都没留下…
展开
-
C#数据结构与算法学习笔记 优先队列
class MaxPQ<E>:IQueue<E> where E:IComparable<E> { private MaxHeap<E> heap; public int Count { get { return heap.Count; } } public bool IsEmpty { get { return heap.IsEmpty; } } public MaxPQ(...原创 2021-06-07 15:29:44 · 233 阅读 · 1 评论 -
C#数据结构与算法学习笔记 堆排序
什么是优先队列和堆? class MaxHeap<E> where E : IComparable<E> { private E[] heap; private int N; public MaxHeap(int capacity) { heap = new E[capacity + 1]; N = 0; } pub原创 2021-06-06 10:43:57 · 193 阅读 · 1 评论 -
C#数据结构与算法学习笔记 快速排序
快速排序1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。 class QuickSort1 { public static void Sort(int[] arr) { int n = arr.Length; Sort(arr, 0, n - 1); }原创 2021-06-01 19:20:36 · 192 阅读 · 0 评论 -
C#数据结构与算法学习笔记 归并排序
1.归并排序的归并过程2.归并排序及递归调用3.归并排序优化原创 2021-05-31 17:14:45 · 150 阅读 · 0 评论 -
C#数据结构与算法学习笔记 排序算法
1.冒泡排序比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 class BubbleSort { public static void Sort(int[] arr) { int n = arr.Length原创 2021-05-27 19:39:22 · 179 阅读 · 0 评论 -
C#数据结构与算法学习笔记 基于哈希表实现集合、映射
基于哈希表实现集合 class HashST1Set<Key> : ISet<Key> { private HashST1<Key> hashST1; public int Count { get { return hashST1.Count; } } public bool IsEmpty { get { return hashST1.IsEmpty; } } public HashS原创 2021-05-27 10:53:00 · 231 阅读 · 0 评论 -
C#数据结构与算法学习笔记 哈希表
1.哈希函数的设计2.哈希冲突处理3.哈希表添加、删除、包含原创 2021-05-27 09:32:17 · 148 阅读 · 0 评论 -
C#数据结构与算法学习笔记 基于红黑树实现集合、映射
基于红黑树实现集合 class RBT1Set<E> : ISet<E> where E : IComparable<E> { private RBT1<E> rbt; public RBT1Set() { rbt = new RBT1<E>(); } public int Count { get { return rbt.C原创 2021-05-25 18:53:15 · 198 阅读 · 0 评论 -
C#数据结构与算法学习笔记 红黑树
1.什么是2-3数2.什么是红黑树3.左旋转4.颜色反转和右旋转5.添加、包含、最大高度原创 2021-05-25 18:05:11 · 241 阅读 · 0 评论 -
C#数据结构与算法学习笔记 基于二叉查找树实现集合、映射
1.基于二叉查找树实现集合 class BST1Set<E> : ISet<E> where E : IComparable<E> { private BST1<E> bst; public BST1Set() { bst = new BST1<E>(); } public int Count { get { return b原创 2021-05-24 17:45:04 · 270 阅读 · 2 评论 -
C#数据结构与算法学习笔记 删除树中元素,计算树的最大高度
1.删除最大和最小元素找到最小值、最大值: public E Min() { if (IsEmpty) throw new ArgumentException("空树!"); return Min(root).e; } //返回以node为根的二叉查找树的最小值所在的节点 private Node Min(Node node)原创 2021-05-23 19:28:34 · 241 阅读 · 0 评论 -
C#数据结构与算法学习笔记 前序、中序、后序、层序遍历
1.前序遍历 public void PreOrder() { PreOrder(root); } //前序遍历以node为根的二叉查找树 private void PreOrder(Node node) { if (node == null) return; Console.WriteLine(node原创 2021-05-23 16:57:59 · 496 阅读 · 0 评论 -
C#数据结构与算法学习笔记 递归
1.递归与栈 class Program { public static int Func(int n) { if (n == 1) return 1; else return n * Func(n - 1); } static void Main(string[] args) {原创 2021-05-23 10:03:45 · 178 阅读 · 0 评论 -
C#数据结构与算法学习笔记 基于有序数组实现集合、映射
基于有序数组实现集合 class SortedArray1Set<Key> : ISet<Key> where Key : IComparable<Key> { private SortedArray1<Key> s; public int Count { get { return s.Count; } } public bool IsEmpty { get { return s.IsEmp原创 2021-05-21 12:12:33 · 314 阅读 · 0 评论 -
C#数据结构与算法学习笔记 有序数组和二分查找
1.二分查找和顺序查找二分查找: class TestSearch { public static int BinarySearch(int[] arr, int target) { int l = 0; int r = arr.Length - 1; while (l <= r) { //int mid = (l +原创 2021-05-20 19:27:00 · 305 阅读 · 0 评论 -
C#数据结构与算法学习笔记 基于无序链表实现映射
接口: interface IDictionary<Key,Value> { int Count { get; } bool IsEmpty { get; } void Add(Key key, Value value); void Remove(Key key); bool ContainsKey(Key key); Value Get(Key key); ..原创 2021-05-19 15:57:59 · 202 阅读 · 1 评论 -
C#数据结构与算法学习笔记 基于无序链表实现集合
集合接口: //集合接口 interface ISet<E> { int Count { get; } bool IsEmpty { get; } void Add(E e); void Remove(E e); //查询集合是否包含某元素 bool Contains(E e); }实现链表的集合: class LinkedList1Set<..原创 2021-05-19 15:03:23 · 173 阅读 · 0 评论 -
C#数据结构与算法学习笔记 栈与队列
1. 数组栈创建接口: interface IStack<E> { int Count { get; } bool IsEmpty { get; } void Push(E e); //往栈中添加元素 E Pop(); //删除栈顶元素,并将栈顶元素返回 E Peek(); //查看栈顶元素 }实现接口:原创 2021-05-18 16:45:08 · 149 阅读 · 0 评论 -
C#数据结构与算法学习笔记 链表
1. 什么是链表 class LinkedList1<E> { private class Node { public E e; //实际存储的元素,E类型的泛型,支持任意类型的数组 public Node next; //记录当前节点的下一个节点 public Node(E e,Node next) //用构造函数对这个类进行初始化原创 2021-05-16 18:30:16 · 173 阅读 · 0 评论 -
C#数据结构与算法学习笔记 数组(下)
1.5 动态数组 //动态数组 private void ResetCapacity(int newCapacity) //传递一个临时容量 { int[] newData = new int[newCapacity]; for (int i = 0; i < N; i++) { newData[i] = data[i]; }原创 2021-05-14 21:39:34 · 116 阅读 · 0 评论 -
C#数据结构与算法学习笔记 数组(上)
1.1 什么是动态数组namespace DataStructure{ class Program { static void Main(string[] args) { int[] arr = new int[10]; for (int i = 0; i < 10; i++) //不具备自动扩容,改为15会报错 { arr[i] = i;原创 2021-05-14 17:05:15 · 117 阅读 · 0 评论