- 博客(11)
- 收藏
- 关注
原创 剑指offer之数组
时间限制:1秒空间限制:32768K题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。public class Solution { public boolean Find(int [][] array,int target) { in
2016-07-17 10:41:16 253
转载 希尔排序与快速排序
上节讲的归并排序运行速度比简单排序块,但是它需要的空间是原始数组空间的两倍;通常这是一个严重的缺点 希尔排序,希尔排序的时间复杂度是O(N*(logN)^2)。希尔排序是基于插入排序的。希尔排序又叫缩小增量排序,它是基于插入排序的增强版。 基本思想:把记录按步长进行分组,对每组记录采用直接插入的方法进行排序。随着步长的缩小,所分成的组包含的记录就越来越多,当步长
2016-07-15 16:50:03 3815
原创 归并排序
归并排序比简单排序有效率的多,归并排序的时间复杂度只要O(N*logN),至少在速度上是这样的。 归并排序的一个缺点就是它需要在存储器上有另一个大小等于被排序的数据项的数目的数组。如果初始数组几乎站满整个存储器,那么归并排序将不能工作。但是有足够的空间,归并排序会是一个很好的选择。 归并两个有序数组A,B,生成第三个数组C,数组C包含A,B中的所有数据项。
2016-07-15 11:29:05 366
原创 java的一些基本问题
verload和override的区别。Overloaded的房哪个发是否使可以改变返回值的类型? 从字面意思上看,overload是重载,override是重写。 重载是表示一个类中允许多个重名方法,但是这些方法的参数列表不同(即为参数的个数或者类型不同) 重写override表示子类中的方法和父类中的方法名字及参数完全相同,通过子类创建的实
2016-07-13 11:26:04 383
原创 java内存可见性
理解java内存可见性,首先我们要理解java内存模型。什么是java内存模型(JMM)? Java Memory Model (JAVA 内存模型)描述线程之间如何通过内存(memory)来进行交互。 具体说来, JVM中存在一个主存区(Main Memory或Java Heap Memory),对于所有线程进行共享,而每个线程又有自己的工作内存(Working Memory)
2016-07-13 09:54:43 478
转载 java锁机制
一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在java里面就是某个同步对象的锁(一个对象只有一把锁);如果这个时>候同步对象的锁被其他线程拿走了,它(这个线程)就只能等待(线程阻塞在锁池等待队列中)。取到锁后,他就执行同步代码(被synchronzied修饰的代码);线>程执行完同步代码后马上就把锁还给同步对象,其他在锁池中等待的某个线程就可以拿到锁执行同步
2016-07-12 12:04:04 375
转载 简单排序
冒泡排序: 冒泡排序的效率很低,但是概念上是排序算法种最简单的。使用冒泡排序算法对棒球队员排序如下图: public void bubbleSort(){ int out,in; if(nElems<2){ return a;
2016-07-09 07:58:53 311
原创 类加载过程
类加载过程: 类加载的全过程:加载、验证、准备、解析、初始化这5个过程。 加载:在加载阶段虚拟机需要完成以下3件事: 1)通过一个类的全限定名来获取定义此类的二进制字节流 2)将这个字节流所代表的静态存储结构转化为方法区的运行时结构 3)在java堆
2016-07-08 16:03:46 2269
原创 垃圾收集器与内存分配策略
垃圾收集器: 如果说垃圾收集算法是内存回收的方法论,垃圾收集器就是内存回收的具体实现。对各种收集器进行比较并不是为了挑选出一个最好的收集器来而是为了对>具体应用选择最合适的收集器。收集器可以搭配使用。 Serial收集器: serial收集器是最基本的、最古老的收集器,曾经是新生代收集的唯一选择。是一个单线程收集器。不仅
2016-07-08 15:27:00 332
原创 垃圾收集算法
堆中存放着几乎java世界中所有的对象实例,垃圾收集器在对堆进行回收之前,第一件事就是要确定这些对象有哪些还“存活”着,哪些已经“死去”。 引用计数算法:引用计数法是最基本的方法:给对象中添加一个引用计数器,每一个地方引用它时,计数器就加1;当引用失效时,计数器的值就减1;任何>时刻计数器为0的对象就是不可能再被使用的。但是!它很难解决对象之间的相互引用问题。所以虚拟机并不是通过
2016-07-08 10:43:42 1272
原创 Java内存区域与内存溢出异常
java虚拟机在执行java程序的过程中会吧它所管理的内存划分为若干个不同的数据区:程序计数器、虚拟机栈、本地方法栈、方法区、堆。 程序计数器:程序计数器是一块较小的内存区,作用是看做当前线程所执行的字节码的行号指示器。在虚拟机中,字节码解释器工作时通过改变这个计数器>的值来选取下一条所需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数
2016-07-08 09:31:26 494
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人