编程-术
文章平均质量分 84
古月慕南
这个作者很懒,什么都没留下…
展开
-
ArrayList的contains方法和HasMap的containsKey效率差十倍
本文阐述了ArrayList的contains方法和HashMap的containsKey方法效率相差很大的原因,如果要用contains方法,用HashMap来代替要远远快于ArrayList。原创 2016-05-10 12:58:39 · 20657 阅读 · 6 评论 -
二叉树遍历(先序、中序、后序、深度、广度)递归和非递归实现
二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。二叉树的遍历方式分为深度遍历和广度遍历,深度遍历包括前序、中序以及后序三种遍历方法,广度遍历即我们平常所说的层次遍历。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的深度遍历不仅容易理解而且代码很简洁,而对于广度遍历来说,需要其他数据结构的支撑,比如堆了。所以,对于一段代码来说,可读性有时候要比代码本身的效率原创 2017-04-07 15:11:15 · 1804 阅读 · 0 评论 -
堆与堆排序
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节原创 2017-04-12 10:48:20 · 716 阅读 · 0 评论 -
算法时间复杂度的表达-渐进符号与主定理
渐进符号是分析算法时间复杂度的常用记号,对于某个规模为n的问题,当n足够大时,就可以忽略掉复杂度表达式中的低阶项和最高次项的系数,由此引出“渐进复杂度”,并且用渐进符号来对“渐进复杂度”进行表达。一、渐进符号1、O(大O符号):上界定义:若存在两个正的常数 c 和 n0 , 对于任意 n≥n0 , 都有 T( n)≤cf( n) ,则称T( n) = O( f( n) )(或称算法在原创 2017-04-18 16:09:25 · 12021 阅读 · 0 评论 -
java动态代理模式(jdk和cglib)
为什么需要代理假设有一个计算器类,类中定义了加,减,乘,除操作,然后我希望在每个方法执行前后打印一些提示信息,比如 “XX方法开始执行。。”,“XX方法结束执行。。”,要做到这一点,普通的解决方式是在每个方法前后加上 System.out.println("XX方法正在执行。。"),System.out.println("XX方法结束执行。。"),这样写起来十分麻烦,如果我们以后要扩充这个类,原创 2016-07-26 10:56:46 · 721 阅读 · 0 评论