java实现二分法查找
二分法数组查找数组为有序数列
快速排序的方法
import java.util.Arrays;
Arrays.sort(arr);
ps:本人技术有限,以后还会更新
当要查找的数值在L—M 则 H=M-1
若在M—H 则 L=M+1
public class Erfenfa
{
public static void main(String[] args)
{
int[] arr = {1,8,15,23,28,31,38,40,65}; //创建数组
System.out.println(er(arr, 23)+1); // "+1" 为实际第几个 不加为数组下标数
}
public static int er(int[] arr, int key)
{
int mid = arr.length / 2; //中间点索引
if (key == arr[mid])
{
//找到,返回该数据索引
return mid;
}
int L = 0; //低索引
int H = arr.length - 1; //高索引
while (L <= H)
{
mid = (H - L) / 2 + L; //中点索引
if (key < arr[mid])
{
//若所查找值小于中间值,高索引=中值索引-1
H = mid - 1;
}
else if (key > arr[mid])
{
//若所查找值大于中间值,低索引=中值索引+1
L = mid + 1;
}
else
{
return mid; //找到
}
}
return -2; //未查找到,返回-1
}
}