用Java语言编写对整型数组进行二分查找的程序。

 我来答
百度网友2374fe58
推荐于2017-10-07 · TA获得超过808个赞
知道小有建树答主
回答量:420
采纳率:100%
帮助的人:195万
展开全部
public class BinarySearchDemo {

public static void main(String[] args) {
int[] a = new int[]{1,5,7,9,11,18,23,48,69};
int point = new BinarySearchDemo().binarySearch(a, 23);

if(point == -1)
System.out.println("在数组中未查找到数23");
else
System.out.println("数字23是数组中第 " + (point + 1) + " 位数");

}

/**
* 二分法查找一个整数在整型数组中的位置
*
* 算法思路:首先得到数组a的最小值和最大值的下标,分别是:low和high,接着求出值位于数组中间那个数的下标middle
* 然后再将这个middle对应的数组中的数和待查找的数num进行比较,如果相等,则表示已查找到,如果num < a[middle]
* 则说明num位于a[low]和a[middle]之间,于是将a[middle - 1]设为较大值,继续求出此时对应的a[middle],
* 再进行比较,其他情况可依次类推。一直到low=high,如果此时还没有在数组a中查找到,则说明该数组a中没有值num,返回-1
*
* @param a 给定的整型数组
* @param num 待查找的数 num
*
* @return 返回整数num在数组a中的位置下标,如果未查找到则返回-1
* */
public int binarySearch(int[] a,int num){
int low = 0;
int high = a.length - 1;

while(low <= high){
int middle = (low + high) / 2;
if(num == a[middle])
return middle;
else if(num < a[middle])
high = middle - 1;
else
low = middle + 1;
}

return -1;
}

}

程序基本上就是这样了,其中注释中有详细的解释说明
百度网友1a75a44
推荐于2017-09-22
知道答主
回答量:5
采纳率:0%
帮助的人:10.5万
展开全部
二分查找要求数组事先排好序
import java.util.*;

public class MyBinary {

public static void main(String args[]) {

int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

int key;// 声明要查找的数据

Scanner in = new Scanner(System.in);// 声明Scanner对象,可由键盘输入数据

System.out.print("数组为:");
for (int i = 0; i < array.length; i++) {

System.out.print(array[i] + " ");
}

System.out.println();

System.out.println("请输入你要查找的数据:");
key = in.nextInt();// 获得由键盘输入的数据

int i = new MyBinary().search(array, key);

if (i == -1) {
System.out.println("没有找到" + key + "!");
} else {
System.out.println("找到,下标为" + i);
}

}

public int search(int[] number, int key) {
int left = 0;
int right = number.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (number[mid] < key)
left = mid + 1;
else if (number[mid] > key)
right = mid - 1;
else
return mid;
}
return -1;
}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
仰语燕N3
2012-04-09 · TA获得超过112个赞
知道答主
回答量:202
采纳率:0%
帮助的人:33万
展开全部
用Arrays的静态方法binariSearch方法就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式