Java 位图法排序
摘要:java JDK里面容器类的排序算法使用的主要是插入排序和归并排序,可能不同版本的实现有所不同,关键代码如下: /** * Performs a sort on the section of the array between the given indices * using a mergesort with exponential search algorithm (in which the merge * is performed by exponential search). n*log(n) performance is guaranteed * a...
阅读全文
posted @
2012-03-09 15:19
Kingle
Java shuffle 算法
摘要:Fisher–Yates shuffle 基本思想(Knuth shuffle ):To shuffle an array a of n elements (indices 0..n-1): for i from n − 1 downto 1 do j ← random integer with 0 ≤ j ≤ i exchange a[j] and a[i]JDK源代码如下:/** * Moves every element of the List to a random new position in the list. * * @par...
阅读全文
posted @
2012-03-07 16:51
Kingle
Java Final
摘要:JAVA关键字final用于修饰数据、方法或类,通常意味着“无法改变的”,既数据不能改变,方法不能覆盖,类不能继承。一般采用final有两种原因:设计和效率。而随着JAVA版本的更新,一些效率上的问题可以交由编译器和JVM处理。因此,采用final来解决效率问题就显得不是那么重要了。 Final修饰符大多运用于基本数据类型(primitive)域或者不可变(immutable)类的域(如果类中的所有方法方法都不会改变其对象,这种类就是不可变类。String就是一个不可变类)。【final数据】 Final关键字用修饰数据主要有两种情况:1.编译期常量2.运行时初始化的值 对于编译期常量,指..
阅读全文
posted @
2012-02-08 21:58
Kingle
JAVA 数组
摘要:JAVA数组与容器类主要有三方面的区别:效率、类型和保存基本类型的能力。在JAVA中,数组是一种效率最高的存储和随机访问对象引用序列的方式。数组就是一个简单的线性数列,这使得元素访问非常快速。但是为此付出的代价却是数组的大小被固定,并且在其生命周期中不可改变。 由于范型和自动包装机制的出现,容器已经可以与数组几乎一样方便地用于基本类型中了。数组和容器都可以一定程度上防止你滥用他们,如果越界,就会得到RuntimeException异常。数组硕果仅存的优势便是效率,然而,如果要解决更一般化的问题,那数组可能会受到过多的限制,因此这种情况下大部分还是会选择容器。 因此,如果使用最近的JAVA版..
阅读全文
posted @
2012-02-05 12:29
Kingle