
常用算法
文章平均质量分 82
超超超厉害
这个作者很懒,什么都没留下…
展开
-
排序算法
排序算法一.插入类排序1.直接插入排序2.折半插入排序3.希尔排序一.插入类排序在一个已经有序的序列中,将一个新的关键字插入到合适的位置,这种方法叫做插入类排序。包括直接插入排序,折半插入排序,希尔排序。1.直接插入排序void InsertSort(int R[],int n){ int i,j,temp; for(i=1;i<n;i++){ //注意是从i=1开始的,因为第一个不用排序 temp = R[i]; //将待插入关键字暂存与temp j=i-1; //下面这个循环原创 2021-05-15 21:54:10 · 170 阅读 · 0 评论 -
并查集
并查集概述并查集初始化查询(集合的代表元素)合并路径压缩合并(路径压缩)概述并查集被很多OIer认为是最简洁而优雅的数据结构之一,主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作:合并(Union):把两个不相交的集合合并为一个集合。查询(Find):查询两个元素是否在同一个集合中。并查集并查集的重要思想在于,用集合中的一个元素代表集合。我曾看过一个有趣的比喻,把集合比喻成帮派,而代表元素则是帮主。接下来我们利用这个比喻,看看并查集是如何运作的。最开始,所有大侠各转载 2021-04-17 21:39:20 · 159 阅读 · 0 评论 -
动态规划经典问题-最大连续子序列和
最大连续子序列和题目分析朴素的递归策略(未用到动态规划)改进:自顶向下的备忘录法自底向上的递推方法题目给出一个整数序列S,其中有N个数,定义其中一个非空连续子序列T中所有数的和为T的“序列和”。 对于S的所有非空连续子序列T,求最大的序列和。 变量条件:N为正整数,N≤1000000,结果序列和在范围(-263,263-1)以内。输入描述:第一行为一个正整数N,第二行为N个整数,表示序列中的数。输出描述:输入可能包括多组数据,对于每一组输入数据,仅输出一个数,表示最大序列和。示例1输入5原创 2021-03-17 22:44:40 · 1344 阅读 · 1 评论 -
动态规划
已知问题规模为n的前提A,求解一个未知解B。(我们用An表示“问题规模为n的已知条件”)此时,如果把问题规模降到0,即已知A0,可以得到A0->B.如果从A0添加一个元素,得到A1的变化过程。即A0->A1; 进而有A1->A2; A2->A3; …… ; Ai->Ai+1.这就是严格的归纳推理,也就是我们经常使用的数学归纳法;对于Ai+1,只需要它的上一个状态Ai即可完成整个推理过程(而不需要更前序的状态)。我们将这一模型称为马尔科夫模型。对应的推理过程叫做“贪心法转载 2021-03-16 22:37:05 · 105 阅读 · 0 评论 -
回溯法
回溯法目录回溯法一、回溯法是什么?二、回溯法基本思想三、回溯法实现1.递归实现2.递推(迭代)实现四.子集树和排列树1.子集树2.排列数一、回溯法是什么? 回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。二、回溯法基本思想 回溯法对任一解的生成,一般都采用逐步扩大解的方式。每前进一步,都试图在当前部分原创 2021-03-14 21:54:39 · 1258 阅读 · 0 评论