`
yinyi_sys
  • 浏览: 2031 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java二分查询与普通查询性能对比

    博客分类:
  • JAVA
阅读更多


   public static void main(String[] args) {
		int[] nums = new int[10000000];
		for (int i = 0; i < 10000000; i++) {
			nums[i] = i;
		}
		commonSearch(nums, 10000000 - 1); //普通查询
		binarySearch(nums, 10000000 - 1); //二分查询

	}

// 普通查询
	public static void commonSearch(int nums[], int snum) {
		long timsf = System.nanoTime();
		for (int i = 0, len = nums.length; i < len; i++) {
			if (nums[i] == snum) {
				System.out.println("普通循环总共循环:" + (i + 1) + "次");
				break;
			}
		}
		long timse = System.nanoTime();
		System.out.println("普通循环总共耗时:" + (timse - timsf) + "ns");
	}

// 二分查询
	public static void binarySearch(int nums[], int snum) {
		int index = 0;
		int low = 0;
		int hig = nums.length - 1;
		long timsf = System.nanoTime();
		for (int i = 0, len = nums.length; i < len; i++) {
			index = (low + hig) / 2;
			if (nums[index] == snum) {
				System.out.println("二分查询总共循环:" + (i + 1) + "次");
				break;
			} else if (nums[index] < snum) {
				low = index + 1;
			} else {
				hig = index - 1;
			}
		}
		long timse = System.nanoTime();
		System.out.println("二分查询总共耗时:" + (timse - timsf) + "ns");
	}

执行结果:
普通循环总共循环:10000000次
普通循环总共耗时:22860745ns
二分查询总共循环:24次
二分查询总共耗时:65987ns


long timse = System.nanoTime();

"这里为了体现性能结果采用纳秒来计算。"
15
27
分享到:
评论
3 楼 trnnn 2012-07-31  
个人拙见:这个 System.out.println 这样的输出语句 还是不要写在性能测试的主题代码里头比较好,因为这个out相当耗时间。第二,因为JVM对执行性能的优化 同一个方法第一次执行 和第二次执行的时间有很大差别,最好把同一个代码段预先执行三到五次,才能达到最佳性能
2 楼 wuxing429 2012-07-30  
二分查找  排序好的时间当然少   你这个其实是循环了m/n 而普通查找是n
1 楼 love_ysys 2012-07-30  
要是查询的数字就是第一个或者比较靠前呢?。。。所谓的这些查找方法各有优缺点,不限定哪个一定就更好。。。

相关推荐

    Java 基础核心总结 +经典算法大全.rar

    与 Exception 有关的 Java 关键字 throws 和 throw try 、finally 、catch 什么是 Error 内部类 创建内部类集合 Iterable 接口顶层接口 ArrayList Vector LinkedList 类Stack HashSet TreeSet LinkedHashSet 类 ...

    Java开源的下一代社区平台Symphony.zip

    普通帖子:提问或分享对别人有帮助的经验与见解 思绪:写作过程的记录与重放,文字版的沙画表演 (?) 小黑屋:邀请好友在私密空间中进行交流 同城广播:发起你所在城市的招聘、Meetup 等 另外,所有帖子都可以...

    ORACLE9i_优化设计与系统调整

    第二部分 ORACLE应用系统设计优化 91 第8章ORACLE数据库系统优化安装 91 §7.1 应用系统环境规划和Oracle系统安装考虑 91 §7.1.1 操作系统安装考虑 91 §7.1.2 Oracle系统安装考虑 92 §7.2 关于创建多个Oracle实例...

    VC与Labview、Matlab编程论文资料

    VB与VC_环境下基于MapX的二次开发比较.pdf VC++环境下快速可重组测控实验系统的开发.pdf VC6_0与MATLAB7_x混合编程方法研究.pdf VC_6_0和Matlab编程矩阵电路程序.pdf VC_6_0实现客户端与服务器端通讯.pdf VC_6_0实现...

    VC与Labview、Matlab编程论文资料[2].rar

    VB与VC_环境下基于MapX的二次开发比较.pdf VC++环境下快速可重组测控实验系统的开发.pdf VC6_0与MATLAB7_x混合编程方法研究.pdf VC_6_0和Matlab编程矩阵电路程序.pdf VC_6_0实现客户端与服务器端通讯.pdf VC_6_0实现...

    VC与Labview、Matlab编程论文资料[4].rar

    VB与VC_环境下基于MapX的二次开发比较.pdf VC++环境下快速可重组测控实验系统的开发.pdf VC6_0与MATLAB7_x混合编程方法研究.pdf VC_6_0和Matlab编程矩阵电路程序.pdf VC_6_0实现客户端与服务器端通讯.pdf VC_6_0实现...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    Java的产生与流行是当今Internet发展的客观要求,Java是一门各方面性能都很好的编程语言,它的基本特点是简单、面向对象、分布式、解释的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的,...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    第三章 Sql查询与函数 一、 SQL概述 SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。  SQL...

    吉林大学软件学院卓班JAVAEE课程设计

    (一)项目要求使用B/S结构,利用Java EE开发平台,实现一个B/S结构的分布式系统,并实现系统的各项功能,包括数据录入、修改、查询,交易过程等。 (二)要求使用JSF作为页面开发手段,请勿使用JSP页面。 (三)...

    基于J2EE框架的个人博客系统项目毕业设计论...

    Java的产生与流行是当今Internet发展的客观要求,Java是一门各方面性能都很好的编程语言,它的基本特点是简单、面向对象、分布式、解释的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的,...

    图书管理系统软件工程课程设计报告.doc

    图书管理系统 系别:计算机科学与技术系网络工程方向 班级:****班 分 组:第9组 成 员:****x 目录 一、问题定义3 二、可行性研究3 1.系统建设目标3 2.可行性分析3 三、系统的需求分析4 1.图书管理系统的需求...

    二十三种设计模式【PDF版】

    提供 Java运行性能,降低小而大量重复的类的开销. C. 行为模式 设计模式之 Command(命令) 什么是将行为封装,Command 是最好的说明. 设计模式之 Observer(观察者) 介绍如何使用 Java API 提供的现成 Observer ...

    新版Android开发教程.rar

    � 暂不具备 Push Mail 和 Office(DataViz 、 QuickOffice 计划近期推出 ) 功能,目前主要面向的是普通消费 者 用户,对商业用户支持尚弱。 Android Android Android Android 带来的影响 ANDROID 的推出后可能影响的...

    jpivot学习总结.doc

    它的属性比较简单,只有 id 和 queryName 两个,而且比较容易理解。 4.4. clickable 该标签的作用是给一个 dimension 或一个 level 里的所有的 members 加上超链,使得它们变的可以进行点击操作。生成的 URL 中...

    C#微软培训资料

    3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型 .28 4.2 引 用 类 型 .33 4.3 装箱和拆箱 .39 4.4 ...

    华为编程开发规范与案例

    软件编程规范培训实例与练习 软件编程规范培训实例与练习  问题分类 1 逻辑类问题(A类)-指设计、编码中出现的计算正确性和一致性、程序逻辑控制等方面出现的问题,在系统中起关键作用,将导致软件死机、功能...

    软件工程与软件测试自动化教程

    7. 3 Panorama for Java和Java Analyzer的安装和设置 7. 3. 1 要求 7. 3. 2 如何安装 7. 3. 3 设置 7. 4 Panorama VB的安装和设置 7. 4. 1 系统要求 7. 4. 2 安装 7. 4. 3 启动Panorama VB及选定目标源程序 7...

    TCP/IP技术大全(中文PDF非扫描版)

    3.5 普通文件传输协议(TFTP) 26 3.6 简单邮件传输协议(SMTP) 26 3.7 网络文件系统(NFS) 26 3.8 简单网络管理协议(SNMP) 27 3.9 TCP/IP和系统结合 27 3.10 内部网概述 28 3.11 小结 28 第二部分 命名和寻址 第4章 IP...

    TCP-IP技术大全

    3.5 普通文件传输协议(TFTP) 26 3.6 简单邮件传输协议(SMTP) 26 3.7 网络文件系统(NFS) 26 3.8 简单网络管理协议(SNMP) 27 3.9 TCP/IP和系统结合 27 3.10 内部网概述 28 3.11 小结 28 第二部分 命名和寻址 第4章 IP...

Global site tag (gtag.js) - Google Analytics