java数组的二进制查找_Java 使用二进制搜索查找数组中的项。

/*

from 时 代 J a v a 公 众 号 - nowjava.com

*/

import java.security.SecureRandom;

import java.util.Arrays;

public class Main {

public static int binarySearch(int[] data, int key) {

int low = 0; // low end of the search area

int high = data.length - 1; // high end of the search area

int middle = (low + high + 1) / 2; // middle element

int location = -1; // return value; -1 if not found

do {

System.out.print(remainingElements(data, low, high));

for (int i = 0; i < middle; i++)

System.out.print(" ");// 来自 nowjava.com - 时代Java

System.out.println(" * "); // indicate current middle

// if the element is found at the middle

if (key == data[middle])

location = middle; // location is the current middle

else if (key < data[middle]) // middle element is too high

high = middle - 1; // eliminate the higher half

else

// middle element is too low

low = middle + 1; // eliminate the lower half

middle = (low + high + 1) / 2; // recalculate the middle

} while ((low <= high) && (location == -1));

return location;

}

private static String remainingElements(int[] data, int low, int high) {

StringBuilder temporary = new StringBuilder();

// append spaces for alignment

for (int i = 0; i < low; i++)

temporary.append(" ");

// append elements left in array

for (int i = low; i <= high; i++)

temporary.append(data[i] + " ");

return String.format("%s%n", temporary);

}

public static void main(String[] args) {

SecureRandom generator = new SecureRandom();

int[] data = new int[15]; // create array

for (int i = 0; i < data.length; i++)

// populate array

data[i] = 10 + generator.nextInt(90);

Arrays.sort(data); // binarySearch requires sorted array

/**代码未完, 请加载全部代码(NowJava.com).**/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值