自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 PV操作考研大题笔记

哲学家干饭问题 问题描述: 有n(n ≥\ge≥ 3)名哲学家围坐在一张圆桌边,每名哲学家交替地就餐和思考。再圆桌中心有m(m ≥\ge≥ 1)个碗,每两名哲学家之间有一根筷子。每名哲学家必须取到一个碗和两侧的筷子后,才能就餐,进餐完毕,将碗和筷子放回原位,并继续思考。为使尽可能多的哲学家同时就餐,且防止出现死锁现象,请使用信号量的P、V操作[wait(),signal()操作]描述上述过程中的互斥与同步,并说明所用信号量及初始值的含义。 解法1:限制最多可以访问资源的人数 semaphore capa

2021-08-14 19:31:23 4127 5

原创 C# 实现二叉排序树

目录二叉排序树介绍创建思路删除节点思路情况一:删除的节点是叶子节点情况二:删除的节点有一个子节点情况三:删除的节点有两个子节点完整代码 二叉排序树 介绍 BST(Binary Sort Tree),对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大 [注] 如果有相同的值,可以将该节点放在左子节点或右子节点(根据创建算法不同自行决定) 创建思路 class Node { void Add(待添加节点 node) { 如果node为空,直接返回

2020-11-06 23:26:52 629

原创 二叉树的应用 堆排序, 赫夫曼树

目录堆排序介绍堆排序的基本思想构造初始堆赫夫曼树基本介绍几个概念 堆排序 介绍 堆排序是利用堆这种数据结构而设计的排序算法,堆排序是一种选择排序,最坏、最好、平均时间复杂度均为O(nlogn) 堆是具有以下性质的完全二叉树:每个节点的值都大于或等于其左右孩子节点的值,称为大顶堆。不要求节点左右孩子的大小关系。 每个节点的值都小于或等于其左右孩子节点的值,称为小顶堆。 以大顶堆为例,按层序进行编号,映射到数组中可以得到 arr[i] >= arr[2i+1] arr[i] >= arr[2i

2020-11-04 20:14:09 294

原创 二叉树,顺序存储二叉树,线索二叉树

目录二叉树介绍遍历结点代码前序遍历中序遍历后序遍历查找前序中序后序删除代码顺序存储二叉树介绍代码线索化二叉树介绍代码补充全部代码二叉树顺序存储二叉树线索二叉树 二叉树 介绍 每个节点最多只能有两个子节点 子节点分为左子节点和右子节点 遍历 [注]:可以把打印当前节点信息的位置当作一种方法来记忆, 例如先打印当前节点信息然后遍历左右子节点即为前序遍历 结点代码 class Node { public int ID { get; set; } public string Name { get

2020-10-19 20:56:14 352

原创 C#实现哈希表

哈希表 介绍 散列表(Hash Table,也叫哈希表),是根据关键码值(key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中的一个位置来访问记录,从而加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 实际需求 有一个公司,当有新的员工报到时,要求将该员工的信息加入(ID,姓名…),当输入该员工的 ID 时,要求查找到该员工的所有信息。 代码 using System; namespace HashTableDemo { class Program

2020-10-01 14:17:04 1328

原创 查找算法(二分查找,插值查找,斐波那契查找)

目录二分查找思路代码插值查找思路代码斐波那契查找(黄金分割法查找)思路代码 二分查找 思路 首先确定该数组中间的下标。 mid = (left + right) / 2 然后让需要查找的数 findVal 和 arr[mid] 进行比较, 如果findVal > arr[mid],说明要查找的数在mid的右边,递归向右; 如果findVal < arr[mid],说明要查找的数在mid的左边,递归向左; 如果findVal == arr[mid],返回下标。 结束条件 left > ri

2020-09-29 20:45:15 220

原创 排序算法2(快速排序,归并排序,基数排序)

排序算法2 目录排序算法2归并排序主要思想代码快速排序主要思想代码基数排序主要思想代码所有代码 归并排序 主要思想 利用分治策略将数组切分至只剩一个元素,再按顺序合并到辅助数组中,最后将数据复制到待排序的数组即可。 代码 static void MergeSort(int[] arr, int left, int right, int[] temp) { if (left < right) { int mid = (left + right) / 2; //中间索引

2020-09-22 20:16:06 204

原创 排序算法1(冒泡排序、选择排序、插入排序、希尔排序)

排序算法1 目录排序算法1冒泡排序主要思想代码优化代码选择排序主要思想代码插入排序主要思想代码希尔排序主要思想代码使用希尔排序对冒泡进行优化代码 冒泡排序 主要思想 对排序序列从前向后,依次比较相邻元素的值,如果逆序则交换。 代码 static void BubbleSort(int[] arr) { for (int i = 0; i < arr.Length - 1; i++) { for (int j = 0; j < arr.Length - i - 1;

2020-09-12 22:47:57 243

原创 C#递归使用及八皇后问题

递归简单使用(寻找路径) 题目描述 如图所示的地图,有颜色的区域代表有墙体,无法通过,现需要从a点到达b点,通过递归来查找可行路径 代码 using System; namespace MazeExample { class Program { static void Main(string[] args) { //创建一个二维数组模拟迷宫 int[,] map = new int[8, 7];

2020-09-10 23:15:30 462

原创 C#实现中缀表达式转后缀表达式以及运算

思路 中缀表达式转后缀表达式 初始化两个栈,运算符栈s1和储存中间结果的栈s2 从左到右扫描中缀表达式 遇到数字则压入s2中 遇到运算符{ – 1.如果s1为空,或栈顶运算符为左括号,则直接将此运算符压入s1 – 2.若优先级比栈顶运算符高,也压入s1 – 3.否则,将栈顶的运算符弹出并压入s2中,再次转到 4.1 与s1中新的栈顶运算符比较 } 遇到括号 { –1. 如果是左括号,则直接压入s1 –2. 如果是右括号,则依次弹出s1栈顶的运算符,并压入s2,直到遇到左括号为止,此时将这一对括号丢弃 }

2020-09-10 23:00:08 1140

原创 c# 实现栈

栈 目录栈简要介绍图解内部成员成员代码构造器IsFullIsEmptyPush(int value)Pop()Peek()完整代码补充(链表实现栈)尾插法单链表实现栈头插法单链表实现栈 简要介绍 栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。 允许插入和删除的一端称为栈顶。 另一端为固定的一端,称作栈底。 遵循先入后出(FILO)的原则 图解 内部成员 [注]本例使用数组存储数据,链表实现栈代码在最后 修饰符 变量名 含义 private int top 指

2020-09-09 16:12:27 1615

原创 C# 实现双向链表

双向链表 目录双向链表节点代码代码框架思路遍历直接添加到链表末尾依据编号顺序添加修改删除 节点代码 class Node { public int ID { get; set; } public string Name { get; set; } public string NickName { get; set; } public Node Next { get; set; } public Node Pre

2020-09-08 18:59:42 1452

原创 C#实现单向环形链表及约瑟夫问题

环形链表 目录环形链表节点代码实现思路代码约瑟夫(Josephu)问题题目描述思路代码 节点代码 class Node { public int ID { get; set; } public Node Next { get; set; } public Node(int iniID) { this.ID = iniID; } } 实现思路 在类体中创建一个 first 节点,

2020-09-08 18:25:49 613

原创 c# 实现单链表

单链表(Linked List)

2020-09-07 18:46:41 715

原创 C#实现队列及环形队列(数组)

队列(Queue) 介绍 队列是一种有序列表,只允许对队尾(rear)进行删除操作,对队首(front)进行删除操作,即先入先出(FIFO)。 实现队列需要的内部元素 元素 含义 maxSize 代表能够存储的数据的个数 front 指向队首 rear 指向队尾 array[] 用于存储数据 void Enqueue(int n) 将元素n入队 int Dequeue() 将队尾元素出队,同时元素个数-1 int Peek() 返回队尾元素,元素个数不变 bool

2020-09-04 23:16:30 3138

原创 c#实现稀疏数组(SparseArray)

稀疏数组 基本原理 当一个数组中大部分元素是一个相同元素时,可以使用稀疏数组来保存该数组,从而减少空间占用。 处理方法 1、记录数组一共有几行几列,有多少个不同的值 2、把具有不同值的元素的行数、列数以及值记录在一个小规模的数组中,从而缩小程序规模 样例 在稀疏数组中,第0行的三个数分别代表原始数组的总行数、总列数以及有效值的个数,其余行的数据分别代表有效值所在的行、列以及值。 代码 转换至稀疏数组 static int[,] CompressArray(int[,] originalArr) {

2020-09-03 23:11:40 843

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除