java学习3-二分法查找法

来源:互联网 发布:数据科学r语言实践 编辑:程序博客网 时间:2024/05/16 19:56
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;elsemin=mid+1;mid=(min+max)>>1;}return -1;}}


0 0
原创粉丝点击