gpt4 book ai didi

java - 通过仅传递一个对象进行手动二进制搜索

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:17:56 24 4
gpt4 key购买 nike

目前卡在二分查找的问题上,要求我传递一个参数是一个对象。但是有可能这样做吗?通常我会使用两个参数来解决这样的问题。通常我使用二进制搜索-->

int binarySearch(int[] list, int searchItem) 
{
int mid=0;
int start=0;
int end=list.length-1;
boolean found=false;

//Loop until found or end of list.
while (start <= end && !found)
{
mid = (start + end) / 2;
if (list[mid] == searchItem)
found = true;
else
if (list[mid] > searchItem)
end = mid - 1;
else
start = mid + 1;
}
if(found)
return mid;
else
return(-1);
}

但是有没有可能像这样只传一个参数呢??我需要搜索数组列表。

  public int binarySearch(Moon searchItem){
int mid = 0;
int start = 0;
int end = moons.size() -1;
boolean found = false;

while(start <= end && !found){
mid = (start + end) / 2;
if(moons.get(mid).equals(searchItem)){
found = true;
}
else{
if(???)) {
}
else
etc etc
}
}
return 0;
}

最佳答案

首先你应该完成这个问题:How to compare objects by multiple fields

然后,实现 ComparableMoon 类。如果您无法更改 Moon 类,则必须创建 Comparator

您需要覆盖 Moon 类中的 compareTo 方法,该方法可用于代替您问题中的 ???

关于java - 通过仅传递一个对象进行手动二进制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41257018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com