您的位置:首页 > 编程语言 > Java开发

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: