java对半查找_java折半查找法 查找数组中与目标数最接近的数 | 学步园

查找数组中最接近目标数的数

/**

* 查找最接近目标值的数,并返回

* @param array

* @param targetNum

* @return

*/

public static Integer binarysearchKey(Object[] array, int targetNum) {

Arrays.sort(array);

int targetindex = 0;

int left = 0, right = 0;

for (right = array.length - 1; left != right;) {

int midIndex = (right + left) / 2;

int mid = (right - left);

int midValue = (Integer) array[midIndex];

if (targetNum == midValue) {

return midIndex;

}

if (targetNum > midValue) {

left = midIndex;

} else {

right = midIndex;

}

if (mid <= 2) {

break;

}

}

System.out.println("和要查找的数:" + targetNum + "最接近的数:"

+ array[targetindex]);

return (Integer) (((Integer) array[right] - (Integer) array[left]) / 2 > targetNum ? array[right]

: array[left]);

}


版权声明:本文为weixin_34108829原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。