算法

什么是树的重心?

一、树的重心树的重心也叫树的质心。找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡。通俗点讲,就是在树中去掉一个点,删除这个点后,最大连通块(一定是树)的结点数最小。举个例子:对于一颗n个节点的无根树,

归并排序算法实例详解

1.复杂度与稳定性算法时间复杂度最坏情况O(NlogN)最好情况O(NlogN)平均情况O(NlogN)空间复杂度O(N)注:归并排序需要创建一个与原数组相同长度的数组来辅助排序稳定性:稳定排序2.过程介绍归并排序的核心思想是将两个有序的数列合并成一个大的有序的序列。

Python分治算法

分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解,是一种分目标完成程序算法,简单的问题可用二分法完成。1.分治算法我们在使用分治算法求解问题的时候是把一个问题划分为多个小问题,

如何证明升幂定理?

一、定义升幂定理(LifttheExponent,常简记为LTE)根据相应乘法群的结构不同,升幂定理分为两部分,模为奇素数与模为2,简记为LTEp和LTE2。定理需要记为素数p在整数n中的个数,即恰好整除整数n,不整除整数。由于其针对模数为素数的幂的强大威力,常出现在各种结论的快速证明中。

树形选择排序(锦标赛排序)C/C++代码图文讲解

树形选择排序(treeselectionsort)是堆排序的一个过渡,并不是核心算法,大家可以结合介绍和C++代码的范例进行理解。(1)算法介绍树形选择排序(TreeSelectionSort),又称锦标赛排序(TournamentSort),是一种按锦标赛的思想进行选择排序的方法。

动态查找-平衡二叉树

1.简介平衡二叉树(BalancedBinaryTree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。其中最为经典当属AVL树,

最小生成树,克鲁斯卡尔(Kruskal)算法及C/C++代码实现

1.克鲁斯卡尔算法简介克鲁斯卡尔(Kruskal)算法是一种用来寻找最小生成树的算法(用来求加权连通图的最小生成树的算法)。在剩下的所有未选取的边中,找最小边,如果和已选取的边构成回路,则放弃,选取次小边。而具体的操作过程为:a)将图的所有连接线去掉,

线性DP图文实例讲解

线性DP,所谓线性DP,就是指我们的递归方程有一个明显的线性关系的,有可能是一维线性的,也可能是二维线性的。例题一:大盗阿福题目:阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。这条街上一共有NN家店铺,每家店中都有一些现金。

什么是凸包?

凸包(ConvexHull)是一个计算几何(图形学)中的概念。在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。X的凸包可以用X内所有点(X1,...Xn)的线性组合来构造.在二维欧几里得空间中,凸包可想象为一条刚好包著所有点的橡皮圈。

C++STL之Priority_queue(优先队列)

1.简介优先队列是一种极其特殊的队列,他与标准的队列使用线性结构进行计算不同,优先队列的底层是以散列的状态(非线性)表现的,他与标准的队列有如下的区别,标准的队列遵从严格的先进先出,优先队列并不遵从标准的先进先出,而是对每一个数据赋予一个权值,