【问题标题】:How to determine the index of certain elements in a sorted array in java?如何确定java中排序数组中某些元素的索引?
【发布时间】:2017-01-13 15:39:36
【问题描述】:

我有一个项目,我必须确定给定数组中正/负整数的索引。

我知道我必须对数组进行排序并使用Arrays.binarySearch(),但我不知道该怎么做。有人建议我使用列表,但我没有那么先进。你能帮帮我吗?

例如,我们有这个“array = [0,-22, 8, 99, -4, 0, -2 ,8]”。排序后,我不知道如何将数组与“binarySearch”方法关联起来,以便列出所有积极的元素。

【问题讨论】:

  • Google 是你的朋友 bynari search,有很多方法可以做到。

标签: java arrays indexing


【解决方案1】:

此算法会打印给定数组中的所有正整数。也许这就是您要寻找的地方:

Integer[] array = { 0, -22, 8, 99, -4, 0, -2, 8 };

Arrays.sort(array);
int i = Arrays.binarySearch(array, 1);

i = (i < 0) ? (i * -1) - 1 : i;

for (int j = i; j < array.length; j++)
{
    System.out.println("found positive int: " + array[j]);
}

如何解释二分查找方法的返回值在Java API docs中解释。

【讨论】:

  • binarySearch 的否定结果表示该元素不在数组中,但该值是(-(insertion point) - 1),因此您可以找出需要将其插入的位置以保持数组排序.
【解决方案2】:

“二分查找”用于查找。您可以使用冒泡、插入、选择、合并、堆、shell 或快速排序算法来满足您的需求。以下街道上的动画将有助于它们的工作方式。

https://www.toptal.com/developers/sorting-algorithms

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-04
    • 2017-03-12
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 2017-06-08
    相关资源
    最近更新 更多