
算法
文章平均质量分 92
托马斯.杨
这个作者很懒,什么都没留下…
展开
-
红黑树
1.概念:红黑树是一种近似平衡的二叉搜索树,在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,因而是接近平衡的。2.性质:1.每个节点不是红色就是黑色;2.根节点是黑色;3.叶子节点(NULL节点)是黑色的;4.红色节点的两个孩子必须是黑色的;5.对于每个节点,从该节点出发到叶子节点所有路径上的黑色节点数相等。因为要满足红黑树的这五条性质,如果我们插入的是黑色节点就一定会原创 2020-10-08 18:18:11 · 323 阅读 · 0 评论 -
最小生成树以及Kruskal算法,Prime算法
一、最小生成树连通图:在无向图中,若从顶点v1到顶点v2有路径,则称顶点v1与顶点v2是连通的。如果图中任 意一对顶点都是连通的,则称此图为连通图。强连通图:在有向图中,若在每一对顶点vi和vj之间都存在一条从vi到vj的路径,也存在一条从vj 到 vi的路径,则称此图是强连通图。生成树:一个连通图的最小连通子图称作该图的生成树。有n个顶点的连通图的生成树有n个顶点 和n- 1条边连通图中的每一棵生成树,都是原图的一个极大无环子图,即从其中删去任何一条边,生成树就不在连通;反之,在其中引入任何一条新原创 2020-08-10 21:01:48 · 629 阅读 · 1 评论 -
LRU算法
1.什么是LRU CacheLRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法。 什么是Cache?狭义的Cache指的是位于CPU和主存间的快速RAM, 通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。 广义上的Cache指的是位于速度相差较大的两种硬件之间, 用于协调两者数据传输速度差异的结构。除了CPU与主存之间有Cache, 内存与硬盘之间也有Cache,乃至在硬盘与网络之间也有某种意义上的Cache── 称为In原创 2020-07-27 14:24:22 · 267 阅读 · 0 评论 -
银行家算法
1 .死锁2.银行家算法的由来3.银行家算法的作用1.大概流程:2.详细设计由此可见,安全性算法实际是银行家算法的一部分,为当前系统找到一个安全序列,却保此刻的系统的分配状态能够保证内存中的进程全部顺利完成。至此,所有测试用例结束,这6种用例包含了所有可能会出现的情况,从而保证系统在分配资源时能合理的避免死锁的发生...原创 2020-07-25 18:23:45 · 33685 阅读 · 9 评论 -
进程分配算法(FCFS,SJF,RR)
一、进程调度算法的背景在多道程序环境下,内存中存在着多个进程,其数目往往多于处理机数目。这就要求系统能按某种算法,动态地将处理机分配给处于就绪状态的一个进程,使之执行。分配处理机的任务是由处理机调度程序完成的。对于大型系统运行时的性能,如系统吞吐量、资源利用率、作业周转时间或响应的及时性等,在很大程度上都取决于处理机调度性能的好坏。因而,处理机调度便成为OS中至关重要的部分。了解进程调度算法可以更好的理解操作系统是如何将资源合理的分配给各个正在运行的进程。理解三种进程调度算法可以充分利用计算机系统中的原创 2020-07-25 17:50:36 · 3706 阅读 · 0 评论 -
动态分区分配算法(First Fit,Next Fit,Best Fit,Worst Fit)
一、动态分区分配算法的背景为了能将用户程序装入内存,必须为它分配一定大小的内存空间。连续分配方式是最早出现的一种存储器分配方式, 曾被广泛应用于上世纪60~ -80 年代的OS中,该分配万式为个用户程序分配 一个连续的内存空间, 即程序中代码或数据的逻辑地址相邻,体现在内存空间分配时物理地址的相邻。连续分配方式可分为四类:单一连续分配、固定分区分配、动态分区分配以及动态可重定位分区分配算法四种方式,其中动态分区分配算法就是此实验的实验对象。动态分区分配又称为可变分区分配,它是根据进程的实际需要,动态地原创 2020-07-25 17:29:03 · 42605 阅读 · 10 评论 -
我的C++项目----文件加密工具
文件加密工具1、对称加密:1976年以前所有的加密方式都是:甲采用一种加密方式对信息进行加密,乙采用同一种规则对信息进行解密。但是这样一来,有一个极大的缺陷,就是乙要进行解密工作,甲就得告诉乙解密规则,否则无法解密。保存和传递这个规则就成了最大的难题。2、非对称加密:乙方生成两把秘钥(公钥和私钥),公钥是公开的,任何人都可以获取。私钥是保密的,只有乙知道。甲方获取到公钥,然后对...原创 2020-04-24 07:37:27 · 603 阅读 · 0 评论 -
快速排序(C++版)
1.快速排序基本思想快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中 的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右 子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。将区间按照基准值划分为左右两半部分的常见方式有:前后指针版本挖坑法hoa......原创 2020-04-14 16:30:46 · 388 阅读 · 0 评论 -
我的项目---文件加密算法RSA
一、RSA算法基本原理1、RSA的由来1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人 的名字命名,叫做RSA算法。直到现在,RSA算法一直是最广为使用的"非对称加密算法"。毫不夸张地说,只要有计 算机网络的地方,就有RSA算法。2、RSA的加/解密方式公钥(e,n),私钥(d,n)加密:密文 = (明...原创 2020-04-09 16:56:22 · 844 阅读 · 1 评论 -
归并排序(C语言版)
1.基本思想:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有 序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。2.核心步骤:1.分解:把数组元素分解到单个元素,每个为一小组时结束。2.合并相邻两...原创 2019-08-24 23:11:36 · 626 阅读 · 0 评论 -
堆排序(C语言版)
1.堆排序(下面以大堆为例)堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。它是 通过堆来进行选择数据。需要注意的是排升序要建大堆,排降序建小堆。2.图片解释算法1.将第一个元素和最后一个交换,此时,最后一个元素为最大值,数组元素减1并执行过程2,直至只剩下一个根节点。(图中绿色线条交换为过程1)2.从最后一个非叶子节点直至根节点执行向...原创 2019-08-24 18:21:27 · 330 阅读 · 1 评论 -
选择排序(C语言版)
1.基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的 数据元素排完 。2.上图解释3.进入正题,敲代码void Print(int *src, int n){ for (int i = 0; i<n; i++) { printf("%d ", src[i]); } putchar('\n');}void S...原创 2019-08-24 16:56:57 · 219 阅读 · 0 评论 -
希尔排序(C语言版)
1.希尔排序( 缩小增量排序 )希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个 组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述分组和排序的工 作。当到达=1时,所有记录在统一组内排好序。...原创 2019-08-23 17:19:07 · 949 阅读 · 1 评论 -
二叉树(C语言版)
一、定义二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree),其存储结构为链式存储,如下图所示。代码实现typedef char BTDataType;//下面要实现的例子中存储的数据为char型typedef struct BinaryTreeNode { BTDataType _dat...原创 2019-08-22 22:41:13 · 180 阅读 · 0 评论