二分法查找
在kafka中,查找message利用segment+有序offset+稀疏索引+二分查找+顺序查找等多种手段来高效的查找数据!
对有序一维数组,进行折半查找,时间复杂度为:O(log2n)。
1.最坏情况查找最后一个元素(或者第一个元素);
2.最好情况查找中间元素O(1)查找的元素即为中间元素(奇数长度数列的正中间,偶数长度数列的中间靠左的元素);
public class BinaryTest
{
public static int binary(int[] array, int value)
{
int low = 0;
int high = array.length - 1;
while(low <= high)
{
int middle = (low + high) / 2;
if(value == array[middle])
{
return middle;
}
if(value > array[middle])
{
low = middle + 1;
}
if(value < array[middle])
{
high = middle - 1;
}
}
return -1;
}
public static void main(String[] args)
{
int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int value = binary(a, 9);
System.out.println(value);
}
}