上一页 1 ··· 3 4 5 6 7

2021年3月15日

摘要: 排序是数据结构与算法中不可绕过的部分。所谓的排序,就是按照某种约定的比较规则,将一个序列排成某种顺序。例如将n个整数${a\text{1,}a\text{2,...,}an}$按大小顺序排成一个非降序列,使$a1<=a2...<=an$。 排序就是让序列从无序到有序的操作。 排序算法的分类 可以将排 阅读全文
posted @ 2021-03-15 21:01 换甲 阅读(417) 评论(0) 推荐(0) 编辑
 
摘要: 堆的定义 简单来说,堆就是一种有特定约束的完全二叉树。堆要求堆中所有父节点的值大于等于其左右孩子的值,或者小于等于左右孩子的值。前一种被称为大顶堆,后一种被称为小顶堆。 建堆和调整 因为是完全二叉树,可以用数组存储堆这种数据结构,那么我们要怎么样将一个数组中的元素成一个堆呢?其实很简单,只要对每个非 阅读全文
posted @ 2021-03-15 19:53 换甲 阅读(164) 评论(0) 推荐(0) 编辑
 

2021年3月14日

摘要: 快速排序 之前的文章介绍过冒泡算法。在每一轮冒泡排序中,无序序列通过元素间的不断的交换,使无序集合中最大或最小的元素不断沉底,最后这个元素就变成了有序序列的第一个元素。冒泡算法的思想是非常朴素,它的时间复杂度为O(n2),这不能满足速度上的要求。所以有人就想到了优化这个算法的办法,也就这篇文章要介绍 阅读全文
posted @ 2021-03-14 17:12 换甲 阅读(139) 评论(0) 推荐(0) 编辑
 
摘要: 归并排序 归并排序和快速排序一样,也是一种通过分治思想来提升排序速度的高效排序算法。归并排序采用这样一种策略,将待排序的序列分为两部分,这两个部分分别进行排序。排序完成时,这两部分都是有序的,然后再依次比较这两个序列中元素的大小,将这些元素插入到新的序列当中,这个新的序列就是最终排序结果。 两个有序 阅读全文
posted @ 2021-03-14 14:57 换甲 阅读(93) 评论(0) 推荐(0) 编辑
 

2021年3月10日

摘要: 要了解最小生成树的概念,我们首先要知道生成树是什么 生成树的定义 一个有 n 个结点的联通图的生成树是原图的极小连通子图,生成树包含原图中的所有 n 个结点,并且有保持图连通的最少的边。 最小生成树的性质 1.容易想象,要保证n个节点联通,至少要有n-1条边,所以一个有n个节点的生成树必有n-1条边 阅读全文
posted @ 2021-03-10 00:27 换甲 阅读(122) 评论(0) 推荐(0) 编辑
 

2021年3月8日

摘要: 1. 合根植物 w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。 如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗? 阅读全文
posted @ 2021-03-08 10:43 换甲 阅读(172) 评论(0) 推荐(0) 编辑
 

2021年3月7日

摘要: 并查集定义 并查集是一种用来处理不相交集合的树状数据结构。 用途 顾名思义,并查集主要有两个作用 1.并: 合并不相交的集合 2.查::查找集合的代表元素,用来检测集合是否相交。 一些非常常见的算法,如最小生成树,最近公共祖先等,都用到了并查集。 代表元 代表元是集合中用来代表整个集合某个原始,例如 阅读全文
posted @ 2021-03-07 11:47 换甲 阅读(291) 评论(0) 推荐(0) 编辑
 

2021年3月6日

摘要: 三大余数定理 1. 余数的加法定理 x和y之和除以z的余数,等于x除以z的余数加y除以z的余数再除以z的余数。 $$\left( x+y \right) \%z\,\,=\,\,\left( x\%z\,\,+\,\,y\%z \right) \%z$$ 2. 余数的乘法定理 x和y之积除以z的余数 阅读全文
posted @ 2021-03-06 10:51 换甲 阅读(2318) 评论(0) 推荐(0) 编辑
 

2021年3月4日

摘要: 传统幂运算 幂运算应该说是一种很简单的运算,在计算机中,可以通过循环手段实现。要计算$n^m$,需要进行m-1次乘法运算,所以时间复杂度为O(m)。 1 #include <iostream> 2 #define LL long long 3 using namespace std; 4 5 LL 阅读全文
posted @ 2021-03-04 14:49 换甲 阅读(74) 评论(0) 推荐(0) 编辑
 
摘要: 滚动数组是动态规划中常见的一种节省开销的优化开销的手段。 以打印输出斐波那契数列的前n项为例,需要分配长度为n的数组 #include <iostream> #define N 20 // using namespace std; int dp[N]; int main() { dp[0] = 1, 阅读全文
posted @ 2021-03-04 13:53 换甲 阅读(97) 评论(0) 推荐(0) 编辑
 
上一页 1 ··· 3 4 5 6 7