gpt4 book ai didi

java:为什么带有比较器的二进制搜索不起作用?

转载 作者:行者123 更新时间:2023-12-01 06:34:44 25 4
gpt4 key购买 nike

更新:我正在尝试使用 Collections.sort() 使用比较器参数对 arrayList 进行排序。然后进行二分查找。

package collection;

import java.util.*;

public class TryBinarySearch {
public static void main(String[] args){
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 100; i++)
list.add(i);
System.out.println(list);
int b = Collections.binarySearch(list, 8);
System.out.println(b); // a is 8 as expected.

Collections.shuffle(list);
System.out.println(list);

Collections.sort(list, new
Comparator<Integer>(){
public int compare(Integer a, Integer b){
return b.intValue() - a.intValue();
}
});
System.out.println(list); //list is reversed as expected.
int a = Collections.binarySearch(list, 8);
System.out.println(a); // why a is -1?
}
}

b 正如预期的那样为 8;我做了一个反向排序。我的问题是为什么 a 是 -1,而不是 92?

最佳答案

您对列表进行了打乱,因此它没有排序。您必须有一个排序列表才能进行二分搜索

关于java:为什么带有比较器的二进制搜索不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28118489/

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