注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

倚天剑

青春要在奔跑中度过

 
 
 

日志

 
 
 
 

Java 二分查找示例  

2013-09-29 11:33:30|  分类: 开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 java.util.Arrays提供数组二分查找的接口,使用时要注意一些问题,可以帮助我们更简单的得到一个数组中是否包含一个元素,这个元素的位置。

import java.util.Arrays;

public class BianrySearchDemo {

public static void main(String[] args) {
// 演示java.util.Arrays的用法
// 在调用Arrays.binarySearch之前,要先调用Arrays.sort,否则可能查找不到某些值
String[] str = { "热门", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q",
"R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
System.out.println("热门:" + Arrays.binarySearch(str, "热门"));
System.out.println("A:" + Arrays.binarySearch(str, "A"));
System.out.println("B:" + Arrays.binarySearch(str, "B"));
Arrays.sort(str);// 注意,sort不会返回排好序的数组,而是,把输入参数排好序
System.out.println("热门:" + Arrays.binarySearch(str, "热门"));
System.out.println("A:" + Arrays.binarySearch(str, "A"));
System.out.println("B:" + Arrays.binarySearch(str, "B"));

// 另外,Arrays.binarySearch查找不到,返回值是负数,但不一定是-1,所以,要和0 比较
System.out.println("错误的比较方法,得到错误的结果:");
System.out.println("str中是否包含“热门”?" + (Arrays.binarySearch(str, "热门") == -1 ? "否" : "是"));
System.out.println("str中是否包含“无”?" + (Arrays.binarySearch(str, "无") == -1 ? "否" : "是"));
System.out.println("正确的比较方法得到正确的结果:");
System.out.println("str中是否包含“热门”?" + (Arrays.binarySearch(str, "热门") < 0 ? "否" : "是"));
System.out.println("str中是否包含“无”?" + (Arrays.binarySearch(str, "无") < 0 ? "否" : "是"));

}
}


运行结果如下:
热门:-28
A:-1
B:2
热门:26
A:0
B:1
错误的比较方法,得到错误的结果:
str中是否包含“热门”?是
str中是否包含“无”?是
正确的比较方法得到正确的结果:
str中是否包含“热门”?是
str中是否包含“无”?否

  评论这张
 
阅读(259)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017