gpt4 book ai didi

java - 使用 ArrayList 进行二进制搜索集合

转载 作者:行者123 更新时间:2023-11-30 02:54:28 24 4
gpt4 key购买 nike

我很抱歉这个愚蠢的问题,我一直在寻找如何将二进制搜索与我的 ArrayList 一起使用,如下所示:

List<Integer> arrList = new ArrayList<Integer>();       
arrList.add(3);
arrList.add(5);
arrList.add(7);
arrList.add(2);

问题是当我使用时:

Collections.sort(arrList);
Collections.reverse(arrList);
int indeks = Collections.binarySearch(arrList, 7);

indeks 的值始终为 -5,我认为它应该为 2,因为反转 myArrList 后输出如下所示:

[7, 5, 3, 2]

那么我应该在这里做什么才能获得正确的索引 7...?提前致谢

最佳答案

Collections.binarySearch()期望元素按升序排列:

The list must be sorted into ascending order according to the natural ordering of its elements (as by the sort(List) method) prior to making this call. If it is not sorted, the results are undefined.

如果要对降序列表进行二分搜索,请使用 Comparator.reverseOrder() :

int indeks = Collections.binarySearch(arrList, 7, Comparator.reverseOrder());

indeks 现在为 0,对应于列表的第一个元素。

请注意,您可以使用相同的比较器对列表进行降序排序,而不是先升序排序然后反转:

Collections.sort(arrList, Comparator.reverseOrder());

关于java - 使用 ArrayList 进行二进制搜索集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37669453/

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