算法
文章平均质量分 57
Bona125
这个作者很懒,什么都没留下…
展开
-
二分查找原理及其python实现
二分查找又叫折半查找,二分查找属于分治法的应用。所谓分治法,就是将原问题分解成若干个子问题后,利用了规模为n的原问题的解与较小规模(通常是n/2)的子问题的解之间的关系。 使用二分查找的前提是原数列是有序的。其基本思想为:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键码相等,则查找成功;若给定值小于中间记录的关键码,则在中间记录的左半边继续查找;若给定值大于中间记录的关键码,则在...原创 2018-08-09 11:32:35 · 558 阅读 · 0 评论 -
堆排序
堆定义:n个元素称为堆,当且仅当它的关键字序列满足: (1)或者满足: (2)把满足(1)式的堆称为最小堆,满足(2)式的堆称为最大堆可以将堆看作一个完全二叉树。堆的操作对于堆来说,一般具有下边几种操作:(此处均针对最大堆进行分析)元素上移操作当修改堆中某个元素的关键字时,就违反了最大堆的性质。为了重新恢复最大堆的性质,...原创 2018-08-14 09:48:21 · 123 阅读 · 0 评论 -
二叉树
树的基本术语结点:树中的独立单元结点的度:结点拥有的子树数称为结点的度树的度:树内各结点度的最大值叶子:度为0的结点称为叶子或终端结点。非终端结点:度不为0的结点称为非终端结点或分支节点双亲和孩子:结点的子树的根称为该结点的孩子,相应的,该结点称为孩子的双亲兄弟:同一双亲的孩子之间互称兄弟祖先:从根到该结点所经分支上的所有节点子孙:以某结点为根的子树中的任一结点...原创 2018-08-14 17:16:58 · 133 阅读 · 0 评论 -
单链表环的判断及入口结点的查找之快慢指针及其python实现
快慢指针定义: 快慢指针中的快慢指的是移动的步长,即每次向前移动速度的快慢。例如可以让快指针每次沿链表向前移动2,慢指针每次向前移动1次。一定会相遇的证明1、如果链表没有环,那么快指针比慢指针先到达尾部(null)。2、如果链表有环的话,因为快指针走的比慢指针快,所以在环中相遇的过程可以看作是快指针从环后边追赶慢指针的过程。用递归法证明,快慢指针一定会相遇:(1)...原创 2018-08-22 10:52:42 · 659 阅读 · 0 评论 -
next数组两种求法
一、说明 (1)看到网上同一个字符串求 next 数组的值有两种,一种是 -1 开头,一种是 0 开头,虽然有差别,但是以 0 开头的next数组的每一项都比以 -1 开头的next数组的对应项大1,所以,具体是以 0 开头还是以 -1 开头看需要吧,算法都是一样的.KMP 的原始论文 (K,M,P 三个家伙写的原文)中是以 0 开头的,所以下面的写法是以 0 开头的. (2)关于 next ...转载 2018-08-22 15:03:37 · 23721 阅读 · 11 评论 -
bagging与boosting的偏差bias与方差variance
1. 模型的偏差以及方差:模型的偏差:是一个相对来说简单的概念:训练出来的模型在训练集上的准确度。模型的方差:模型是随机变量。设样本容量为n的训练集为随机变量的集合(X1, X2, ..., Xn),那么模型是以这些随机变量为输入的随机变量函数(其本身仍然是随机变量):F(X1, X2, ..., Xn)。抽样的随机性带来了模型的随机性。我们认为方差越大的模型越容易过拟合:假设有两个训...转载 2018-10-04 21:10:42 · 1069 阅读 · 0 评论 -
从数组中取出n个不同的随机数
有一给定数组arr(元素不重复),想要随机从中取出m个元素,怎么取?思想:每次产生一个随机数,在arr数组中取出相应的元素,每次对选中的元素和最后元素交换以下,下一次生成随机数的时候就在前m-1个元素中生成,这样每次只要交换一次元素,就不用去那个数组中判断当前下标是否已经被生成过一次,时间复杂度变成O(m)#从[0,m)中产生n个随机数def nfromm(m,n,unique=Tru...原创 2018-10-05 21:59:52 · 3819 阅读 · 0 评论