----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
java的折半查找用于给定数据在数组中的位置 当然也可以逐个遍历查找 以下是依据黑马java基础教学 里的折半查找做的笔记
/**
* 折半查找可以提高效率 但必须保证数组为有序的数组
*
*/
public static int halfSerarch(int[] arr, int key) {
int mid, min, max; // mid 中间index min最小的index max最大的index
min = 0;
max = arr.length - 1; //数据的下标从0开始这里要做减一 防止数组越界
mid = (min + max) / 2;
while(arr[mid]!=key) //当 中间值不等于所给的形参时 触发
{
if(arr[mid]>key) //中间index值〉所给的形参 意识着给的数较大 所以最小的index 就要往右移在原有中间index基础上+1
min=mid+1;
else if(arr[mid]<key) //中间index值〈所给的形参 意识着给的数较小 同理可得 最大的要往左移在原有中间index基础上-1
max=mid-1;
if(min>max) //如果最小的index都比最大的index要大 则表示数组里没有该数
return -1;
mid=(min+max)/2;
}
return mid; //找到所给数载数组中的index
}
----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------
详情请查看: