Java搜索算法测试
任何项目开发中,在一个集合或数组中循环查找,搜索目标数据,是经常用到的。如果搜索的数据范围比较小,那么不管什么算法,对于今天的计算机来说,性能上基本差别不大,但是如果数据量达到几百万,甚至更大,那么算法的选择和优化就显得比较重要。有空之余测试了下顺序搜索和二分搜索的性能,竟然发现效率差异在1500倍左右。当然,这2种比较的前提是,集合中的数据已经进行了排序处理。
下边是测试代码:
/**
* 搜索算法测试,主要是比较二分搜索和顺序搜索的效率
* @author 百里乐
*/
public class SearchTest
{
/** 被搜索数据的大小*/
private static final int size = 5000000;
/**
* 启动方法
* @param args
*/
public static void main(String[] args)
{
long[] data = new long[size];
//添加测试数据
for(int k =0 ;k<data.length;k++)
{
data[k] = k;
}
// 要查找的数据
long target = 4980002;
binaryFindTest(data,target);
orderFindTest(data,target);
}
/**
* 二分搜索测试
* @param data 数据集合
* @param target 搜索的数据
*/
public static void binaryFindTest(long[] data, long target)
{
long start = System.nanoTime();
int result = binaryFind(data,target);
long end = System.nanoTime();
System.out.println("binary search position:" + result);
System.out.println("binary search time:" + (end-start));
}
/**
* 顺序搜索测试
* @param data 数据集合
* @param target 搜索的数据
*/
public static void orderFindTest(long[] data, long target)
{
long start = System.nanoTime();
int result = orderFind(data,target);
long end = System.nanoTime();
System.out.println("order search position:" + result);
System.out.println("order search time:" + (e
相关文档:
Java NIO API详解
在JDK
1.4以前,Java的IO操作集中在java.io这个包中,是基于流的阻塞(blocking)API。对于大多数应用来说,这样的API使用很方
便,然而,一些对性能要求较高的应用,尤其是服务端应用,往往需要一个更为有效的方式来处理IO。从JDK 1.4起,NIO
API作为一个基于缓冲区,并能提供非阻塞(non-blo ......
定时器类Timer在java.util包中。使用时,先实例化,然后使用实例的schedule(TimerTask task, long delay)方法,设定指定的任务task在指定的延迟delay后执行。定时器任务类TimerTask是抽象类,继承并重写其run()方法,可实现具体任务。
schedule(TimerTask task, Date time)设定指定任务task在指定时间time执行。
cancel() ......
1.介绍
1)DOM(JAXP Crimson解析器)
DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树 ......
Java中JAVA_HOME与CLASSPATH的解析
Java中JAVA_HOME与CLASSPATH的解析
很多人在初学Java的时候经常会被书中介绍的一堆环境变量的设置搞得头昏脑胀,很多书中都会在初装JDK的时候让他大家设置JAVA_HOME环境变
量,在开发程序 ......
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class CmdTest {
private static final long serialVersionUID = -2650474785662737262L;
public static void main(String[] args) throws Exception {
&n ......