![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 74
飞洒地方HHHH
Focus on one thing, simple it.
展开
-
堆算法
一.概念二叉堆在逻辑上可以看成一个完全二叉树,其逻辑结构是一个数组,映射关系如下· 树上的每个节点对应数组上的一个元素· Parent(i) return array[i/2] ; Left[i] return array[2*i]; Right(i) return array[2*i+1];(注意对应的物理数组下标从1开始)二. 主要算法· maxHeapity(维原创 2016-10-13 12:11:54 · 175 阅读 · 0 评论 -
循环不变式
在算法中,有一个重要的概念就是循环不变式,循环不变式主要用来帮助我们理解算法的正确性。关于循环不变式,我们必须证明三条性质:1.初始化:循环的第一次迭代之前,它为真。2.保持:如果循环的某次迭代之前它为真,那么下次迭代之前它仍为真。3.终止:在循环终止时,不变式为我们提供了一个有用的性质,该性质有助于证明算法是正确的。我们用插入排序来解释这个性质:/** * 编写插入排序,原创 2016-10-05 14:30:04 · 689 阅读 · 1 评论 -
Apriori算法的基本思想
Apriori algorithm是关联规则里一项基本算法。是由Rakesh Agrawal和Ramakrishnan Srikant两位在1994年提出的布尔关联规则的频繁项集挖掘算法(详情:Fast Algorithms for Mining Association Rules)。算法的名字是因为算法基于先验知识(prior knowledge).根据前一次找到的频繁项来生成本次的频繁项。转载 2016-10-05 21:42:54 · 6095 阅读 · 0 评论 -
排序算法——归并排序
归并排序是利用递归的思想的。我们可以类比递归函数 sort(n) = M(sort(n1) , sort(n2))(并已经sort(1) = 常数); 对应的递归函数,我们知道要求sort(n)的值,必须先求得sort(n1),sort(n2)的值,然后带入M()函数,求得最后sort(n)的值。 拿归并函数和这个做类比, 就是要求得大数组的排序结果, 必须先求得其已经排序好的两个子数组的排序原创 2016-10-06 09:48:49 · 242 阅读 · 0 评论 -
搜索算法-求解最大子数组
问题定义: 假设在100, 113, 110, 85, 105, 102, 86, 63, 81, 101, 94, 106, 101, 79, 94, 90 , 97 这样一组数据中,它的一个实际背景是,每个值反应的是每天的股票价格,我们需要求出哪天买进股票,哪天卖出股票,得到的收益最大。解法: 1.使用暴力求解我们需要遍历每一种可能的买进和卖出日期组合,也就是穷尽每一种可能的子数组原创 2016-10-07 10:51:08 · 223 阅读 · 0 评论 -
随机化算法
随机化算法的主要目的是希望让随机发生在算法上,而不是发生在输入分布上,这样的话,没有特别的输入会引起我们的算法的最坏情况。即使你最坏的敌人也无法产生最坏的输入数组。因为随机排列使得输入次序不再相关。只有在随机数生成器产生一个不走运的排列时,随机算法才会运行得很差。一. 随机优先级数组法我们为数组的每一个元素A[i] 赋一个随机的优先级P[i], 然后依据优先级对数组A中的元素进行排序。原创 2016-10-08 14:04:48 · 560 阅读 · 0 评论