重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
import java.util.Scanner;
创新互联专注于宁安网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供宁安营销型网站建设,宁安网站制作、宁安网页设计、宁安网站官网定制、小程序开发服务,打造宁安网络公司原创品牌,更为您提供宁安网站排名全网营销落地服务。
public class Test21 {
public static void main(String[] args) {
//定义并初始化数组
int[] arr = {22,33,44,55,66,7,2,5,24};
//定义并初始化Scanner对象,用于获取输入键盘输入的内容
Scanner scanner = new Scanner(System.in);
//输出信息
System.out.print("请输入需要查找的数字:");
//获取键盘输入要查找的数字
int target = scanner.nextInt();
//循环数组
for(int i = 0; i arr.length; i++) {
//如果输入的数字跟当前数组的元素的值相同
if(target == arr[i]) {
//输入所在位置,从1开始
System.out.println(target + "位于数字的第" + (i + 1) + "位");
//结束
return;
}
}
//如果找不到的话就提示一下
System.out.println("数组中不存在数字:" + target);
}
}
大哥.我逻辑性不是很高.所以把c1代进去走一次说给你听........
你传入c1........
BinarySearch(Car[] iArr,Car goal,Car left,Car right )
goal指向c1,left指向c1,right指向c4
left=iArr[0];
right=iArr[iArr.length-1];
现在left指向c1,right指向c4
if(goal.price==iArr[middle].price)iArr[middle].price指向c2所以
进入了else if(goal.priceiArr[middle].price)成立 .....你的代码写了递归
传的参数是BinarySearch(iArr,goal,left,iArr[middle-1])后面3个都是指向c1的对象.再次进入
BinarySearch(Car[] iArr,Car goal,Car left,Car right )
现在goal指向c1,left指向c1,right指向c1
left=iArr[0];
right=iArr[iArr.length-1];
现在left指向c1,right指向c4
if(goal.price==iArr[middle].price)iArr[middle].price指向c2所以
进入了else if(goal.priceiArr[middle].price)成立 .....你的代码写了递归
传的参数是BinarySearch(iArr,goal,left,iArr[middle-1])后面3个都是指向c1的对象.再次进入
goal一直都是指向c1,iArr[middle].price一直指向c2
else if(goal.priceiArr[middle].price)一直成立
所以死循环.......
传入c4可能一样也是这原因吧.
不知道是不是这个原因.我表达也不是很清楚也不知道你知不知道你说什么.你看看啦.
binarySearch
public static int binarySearch(Object[] a,
Object key)使用二分搜索法来搜索指定数组,以获得指定对象。在进行此调用之前,必须根据元素的自然顺序对数组进行升序排序(通过 sort(Object[]) 方法)。如果没有对数组进行排序,则结果是不确定的。(如果数组包含不可相互比较的元素(例如,字符串和整数),则无法 根据其元素的自然顺序对数组进行排序,因此结果是不确定的。)如果数组包含多个等于指定对象的元素,则无法保证找到的是哪一个。
参数:
a - 要搜索的数组
key - 要搜索的值
返回:
如果它包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。插入点 被定义为将键插入数组的那一点:即第一个大于此键的元素索引,如果数组中的所有元素都小于指定的键,则为 a.length。注意,这保证了当且仅当此键被找到时,返回的值将 = 0。
抛出:
ClassCastException - 如果搜索的键不能与数组的元素进行比较。
在你查找的输入数字那段程序中,你看下,直接就是查找到一个然后程序就跳出来了,此时最好的方法是在程序前面定义一个数组,因为你不确定有多少个你要查找的数,该数组用来存储对应查找的数位置,
你再查询那段程序改下,让其不要查找到一个就跳出,而是用一直查找到数组最后,程序我不给你写了,你先自己试试看看,不行的话,再帮你,毕竟自己实践是最好的!