搜索无序整数数组

Eas*_*war 1 java arrays search

搜索索引的最佳方法是什么,属于大的无序整数数组的整数元素的值是什么?对于这个过程,这是最好的搜索技术/算法?

int[] temp = new int[]{1,4,3,6,7,8,5,2,9,......}
Run Code Online (Sandbox Code Playgroud)

现在说,我想搜索元素'9',我也需要获得该元素的索引.我的意思是说,排序数组元素并确定它在这里不起作用(因为我需要跟踪元素的索引).有什么建议?我正在研究java的方式..

cow*_*wls 5

如果您手动执行此操作,则可以迭代每个数组项:

public int indexOf(int search, int[] arr) {

    for(int i = 0; i < arr.length; i++) {
        if(arr[i] == search) {
            return i;
        }
    }

    return -1;

}
Run Code Online (Sandbox Code Playgroud)

如果你知道数组在进行多次搜索之间不会改变,你也可以使用Map缓存结果..只要你更改数组就清空缓存.

private Map<Integer, Integer> indexCache;

public int indexOf(int search, int[] arr) {

    Integer cachedIndex = indexCache.get(search);
    if(cachedIndex != null) return cachedIndex;

    for(int i = 0; i < arr.length; i++) {
        if(arr[i] == search) {
            indexCache.put(search, i);
            return i;
        }
    }

    return -1;

}
Run Code Online (Sandbox Code Playgroud)

实际上,最好使用Map而不是数组来存储这些数据,因为它更适合于键值查找.