java学习3-二分法查找法
2015-09-24 10:42
309 查看
1、二分查找又称折半查找,它是一种效率较高的查找方法。
2、二分查找要求:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。
import java.util.*;
public class ArrHS
{
public static void main(String[] args)
{
int[] arr={10,20,30,40,50,60};
int mid=halfSearch_2(arr,30);
//内置的二分查找方法,若值存在,返回初次查找的下标,若不存在,返回比值小的下标,取负加负一。
System.out.println(Arrays.binarySearch(arr, 35));
System.out.print(mid);
}
/*
* @see 循环2分查找,返回初次查找到的数组下标
* @param arr 已排序的数组
* @param value 要查找的值
* @return 值在数组中的位置,找不到返回-1
*/
public static int halfSearch_1(int[] arr,int value)
{
int min,max,mid;
min=0;
max=arr.length-1;
mid=(min+max)>>1;
while( arr[mid] !=value )
{
if( arr[mid] >value )
max=mid-1;
if( arr[mid]<value)
min=mid+1;
if(min==max)
return -1;
mid=(min+max)>>1;
}
return mid;
}
/*
* @see 循环2分查找,返回初次查找到的数组下标
* @param arr 已排序的数组
* @param value 要查找的值
* @return 值在数组中的位置,找不到返回-1
*/
public static int halfSearch_2(int[] arr,int value)
{
//min数组下标最小值,max数组下标最大值,mid中间值
int min,max,mid;
min=0;
max=arr.length-1;
mid=(min+max)>>1;
while( min!=max)
{
if(arr[mid]==value)
return mid;
else if(arr[mid]>value)
max=mid-1;
else
min=mid+1;
mid=(min+max)>>1;
}
return -1;
}
}
2、二分查找要求:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。
import java.util.*;
public class ArrHS
{
public static void main(String[] args)
{
int[] arr={10,20,30,40,50,60};
int mid=halfSearch_2(arr,30);
//内置的二分查找方法,若值存在,返回初次查找的下标,若不存在,返回比值小的下标,取负加负一。
System.out.println(Arrays.binarySearch(arr, 35));
System.out.print(mid);
}
/*
* @see 循环2分查找,返回初次查找到的数组下标
* @param arr 已排序的数组
* @param value 要查找的值
* @return 值在数组中的位置,找不到返回-1
*/
public static int halfSearch_1(int[] arr,int value)
{
int min,max,mid;
min=0;
max=arr.length-1;
mid=(min+max)>>1;
while( arr[mid] !=value )
{
if( arr[mid] >value )
max=mid-1;
if( arr[mid]<value)
min=mid+1;
if(min==max)
return -1;
mid=(min+max)>>1;
}
return mid;
}
/*
* @see 循环2分查找,返回初次查找到的数组下标
* @param arr 已排序的数组
* @param value 要查找的值
* @return 值在数组中的位置,找不到返回-1
*/
public static int halfSearch_2(int[] arr,int value)
{
//min数组下标最小值,max数组下标最大值,mid中间值
int min,max,mid;
min=0;
max=arr.length-1;
mid=(min+max)>>1;
while( min!=max)
{
if(arr[mid]==value)
return mid;
else if(arr[mid]>value)
max=mid-1;
else
min=mid+1;
mid=(min+max)>>1;
}
return -1;
}
}
相关文章推荐
- eclipse将web项目转化为maven项目
- Spring获取XML
- Spring JdbcTemplate 批量插入或更新操作
- java学习笔记IO输入与输出——常用工具类(1)
- Spring通过构造方法注入的四种方式
- shiro在springmvc,hibernate,ehcache里面的集成使用
- java对象持久化
- Java正则表达式工具类
- 单立模式 Java
- Java之路
- Java基本数据类型总结
- java 接口及抽象类
- 在命令行中执行java的时候指定依赖jar
- Reflect-Java
- java中的byte和char
- 关于eclipse中MAVEN WEB工程中编译问题
- ExceptionJava常见的-java.lang.*
- IO-Java文件操作大全
- Java与Unicode
- JAVA反射机制