码迷,mamicode.com
首页 >  
搜索关键字:最坏情况    ( 494个结果
树状数组
在解题过程中,我们有时需要维护一个数组的前缀和S[i]=A[1]+A[2]+...+A[i]。但是不难发现,如果我们修改了任意一个A[i],那么S[i]、S[i+1]...S[n]都会发生变化。可以说,每次修改A[i]后,调整前缀和S在最坏情况下会需要O(n)的时间。当n非常大时,程序会运行得非常缓慢。因此,这里我们引入“树状数组”,它的修改与求和都是O(logn)的,效率非常高。...
分类:其他好文   时间:2014-08-05 14:15:00    阅读次数:193
算法题:合并两个有序的链表
题目:已知有两个有序的单链表,其头指针分别为head1和head2,实现将这两个链表合并的函数: Node* ListMerge(Node *head1,Node *head2) 这个算法很像我们排序算法中的归并排序,只能说“很像”,因为思想是一样的,但是这个与归并排序还是有区别的,区别如下: 1.归并排序是针对有序数组,而这里是有序链表; 2.归并排序排序的时间复杂度为o(nlogn),而这里的时间复杂度最坏情况下为O(m+n),最好的情况下为...
分类:其他好文   时间:2014-08-04 17:43:47    阅读次数:296
AVL树非递归插入删除思路
AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(logn)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. L...
分类:其他好文   时间:2014-08-03 23:03:06    阅读次数:273
最大子序列问题
最大子数组问题定义 给定整数A1, A2, …, An(其中可能是负数),求k的最大值和序列的起始位置(为了方便起见,如果所有整数均为负数,则最大子序列和为0),使用四种算法(根据运行时间区分)解决这个问题。运行时间为θ(n3) 使用了三个for循环,在最坏情况下,运行时间为θ(n3)C语言实现代码...
分类:其他好文   时间:2014-08-03 17:59:35    阅读次数:263
AVL树的旋转
平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡的二叉树,它通过旋转不平衡的节点来使二叉树重新保持平衡,并且查找、插入和删除操作在平均和最坏情况下时间复杂度都是O(log n)         AVL树的旋转一共有四种情形,注意所有旋转情况都是围绕着使得二叉树不平衡的第一个节点展开的。   1. LL型     平衡二叉树某一节点的左孩子的左...
分类:其他好文   时间:2014-08-01 19:50:02    阅读次数:226
BFPRT线性查找算法
介绍: BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分 析,BFPRT可以保证在最坏情况下仍为线性时间复杂度。该算法的思想与快速排序思想相似,当然,为使得算法在最...
分类:其他好文   时间:2014-07-31 13:45:56    阅读次数:452
平衡查找树(2-3-4 树)
二叉查找树(Binary Search Tree)在很多情况下可以良好的工作,但它的限制是最坏情况下的渐进运行时间为 O(n)。平衡查找树(Balanced Search Tree)的设计则是保证其高度在最坏的情况下为 O(log n),其插入、删除和查找可以实现渐进运行时间 O(log n)。本文...
分类:其他好文   时间:2014-07-24 14:44:35    阅读次数:282
递归方法理解快速排序算法
快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要 小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。最坏情况的时间复杂度为O(n2),最好 情况时间复...
分类:其他好文   时间:2014-07-19 17:04:01    阅读次数:228
STL 源码剖析 算法 stl_algo.h -- includes
search ------------------------------------------------------------------------- 描述:在序列一[first1, last1) 所涵盖的区间中,查找序列二[first2, last2) 的首次出现点。 思路: 1.遍历序列二 2.如果两序列的当前元素一样,都前进 1 3.否则序列二的迭代器重新指向开始元素,序列一前进 1 ,序列一的长度减 1 复杂度: 最坏情况是平方: 最多 (last1 - first1) * (last2...
分类:其他好文   时间:2014-07-19 08:20:52    阅读次数:212
选择排序、插入排序、冒泡排序python实现
选择排序的时间复杂度为O(n^2),是不稳定的排序冒泡排序的时间复杂度最好情况下为O(n),最坏情况下为O(n^2),平均情况下为O(n^2),是稳定的排序插入排序的时间复杂度最好情况下为O(n),最坏情况下为O(n^2),,平均情况下为O(n^2),是稳定的排序1.选择排序def selectio...
分类:编程语言   时间:2014-07-14 19:40:48    阅读次数:235
494条   上一页 1 ... 45 46 47 48 49 50 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!