java,有一个内容是[1, 2, 3, 4]的数组,输出一个用二分法查找后,计算1,2,3,4分别被找到所用次数的数组

用二分法查找1,2,3,4所对应的次数分别是2,1,2,3。有没有什么方法可以最后输出[2,1,2,3]这个数组?... 用二分法查找1,2,3,4所对应的次数分别是2,1,2,3。有没有什么方法可以最后输出[2,1,2,3]这个数组? 展开
 我来答
百度网友200b114
2018-03-27 · TA获得超过261个赞
知道小有建树答主
回答量:324
采纳率:66%
帮助的人:175万
展开全部
public static void main(String[] args) {
Integer[] intArray = new Integer[] { 1, 2, 3, 4 };
// 查找结果对应的次数
Integer[] searchCount = new Integer[intArray.length];
for (int i = 0; i < intArray.length; i++) {
searchCount[i] = binarySearch(intArray, intArray[i]);
}

for (int i = 0; i < searchCount.length; i++) {
System.out.println(searchCount[i]);
}

}

/****
 * 二分查找
 * 
 * @param a
 *            数组
 * @param key
 *            要查找的值
 * @return 查找所需的次数,没有找到返回-1
 */
private static int binarySearch(Object[] a, Object key) {
int low = 0;
int high = a.length - 1;
int count = 0;
while (low <= high) {
count++;
int mid = (low + high) >>> 1;
@SuppressWarnings("rawtypes")
Comparable midVal = (Comparable) a[mid];
@SuppressWarnings("unchecked")
int cmp = midVal.compareTo(key);

if (cmp < 0) {
low = mid + 1;
} else if (cmp > 0) {
high = mid - 1;
} else {
return count; // key found
}
}
return -1; // key not found.
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式