摘要:
【算法08】数对之差的最大值 题目:数组中,数字减去它右边(不要求相邻)的数字得到一个数对之差。求所有数对之差的最大值。例如:数组{2, 4, 1, 16, 7, 5, 11, 9},数对之差的最大值是11,是16-5的结果。 分析1:这道题我们同样可以用遍历的方法,固定一个数字,然后逐一减去它右边的数字,得到各个数对之差,然后比较选出最大值;对于数列中的每一个数字做如此操作,然后去所有最大值的最大值。然而和所有枚举算法的弊端一样,这样的算法效率比较低,所有的数对只差共有n*(n-1)/2,因而时间复杂度为O(n^2)。 分析2:联想到我们在“【算法05】左旋转字符串中”将一个大的字符分... 阅读全文
posted @ 2011-12-02 11:34
madonion
阅读(255)
评论(0)
推荐(0)
摘要:
红黑树之前看了很多写红黑树的博客,但是感觉都讲的不太清楚!没说这样操作如何使他保持平衡的,于是疑惑重重,就看不下去了,一次不经意看到一个人说维基百科的红黑树讲的好,我就随便点了一下一看——这下疯了~,怎么讲的这么好!可以说是把一个复杂的问题,讲得简单化!这太幸福了!于是我就慢慢学会了!强烈推荐维基的这个讲解,再也找不到比这还好的讲解了!不知道它上边其它的怎么样,反正这个很好!!既然学会了,走过来了,我也要留下脚印!下面将是我对红黑树的总结,里面的性感的图片都是维基百科红黑树上的^_^!我讨论的红黑树需建立在会平衡二叉树的基础上去学,即若不懂“旋转”操作,请看平衡二叉树的旋转操作。红黑树(RBT 阅读全文
posted @ 2011-12-02 11:27
madonion
阅读(168)
评论(0)
推荐(0)
摘要:
红黑树维基百科,自由的百科全书红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫·贝尔发明的,他称之为"对称二叉B树",它现代的名字是在 Leo J. Guibas 和Robert Sedgewick于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的: 它可以在O(logn)时间内做查找,插入和删除,这里的n是树中元素的数目。红黑树和AVL树一样都对插入时间、删除时间和查找时间提供了最好可能的最坏情况担保。这不只是使它们在时间敏感的应用如实时应用 阅读全文
posted @ 2011-12-02 11:25
madonion
阅读(965)
评论(0)
推荐(0)
摘要:
谈谈Java虚拟机——Class文件结构大家都知道,Java之所以如此受人喜欢,很大的原因是要规于它的跨平台性。“一次编写,到处运行”,Java诞生之时曾提出的著名的宣传口号,充分表达了软件开发人员对冲破平台界限的渴求。或许大部分程序员都认为Java虚拟机执行Java程序是一件理所当然和天经地义的事,但时至今日,商业机构和开源机构已经在Java语言之外发展出一大批在Java虚拟机之上运行的语言,如Clojure、Groovy、JRuby、Jython、Scale等。使用Java编译器可以把Java代码编译为存储字节码的Class文件,使用JRuby等其它语言的编译器一样可以把程序代码编译成Cl 阅读全文
posted @ 2011-12-01 10:02
madonion
阅读(171)
评论(0)
推荐(0)
浙公网安备 33010602011771号