向后顺序搜索

sequential search backward

我正在学习顺序搜索并有顺序搜索代码,但我想查找其搜索过程是从右(数据结尾)到左(数据开头)的数字。

public static void main(String[] args) {
        int []a={5,6,9,2,8,1,7};
        int key=8;
        boolean f=false;
        for (int i = 0; i < a.length; i++) {
            if(key == a[i]){
                System.out.println("data found on index "+i);
                f=true;
                break;
            }
        }
        if (f=false){
            System.out.println("data not found");
        }
    } 

如果你想从后往前搜索,我想你可以直接编辑循环选项。
for (int i = a.length - 1 ; i >= 0; i--)

如果您要查找与键匹配的所有索引,那么您可以创建一个方法,该方法 return 是一组代表找到的每个索引的整数值。您还可以使用从 array.length - 1 到 0 的简单 for 循环从右到左循环。

    static Set<Integer> matchingIndices(int[] array, int key) {
        Set<Integer> indices = new HashSet<>();

        for (int index = array.length - 1; index > -1; index--) {
            int valueAtIndex = array[index];

            if (valueAtIndex == key) {
                indices.add(index);
            }
        }
        return indices;
    }

例子

    public static void main(String[] args) {
        int [] a= {5,6,9,2,8,1,7};

        int key = 8;

        Set<Integer> indices = matchingIndices(a, key);

        if (indices.isEmpty()) {
            System.out.println("No index found for key.");
        } else {
            System.out.println("Key found at following indices: " + indices);
        }
    }

如果您想使用相同的键从右到左查找第一个索引,只需 return 一个 int 并快速失败。

    static int firstIndex(int[] array, int key) {
        for (int index = array.length - 1; index > -1; index--) {
            int valueAtIndex = array[index];

            if (valueAtIndex == key) {
                return index;
            }
        }
        throw new IllegalStateException("No index found with the same key.");
    } 

例子

    public static void main(String[] args) {
        int [] a= {5,6,9,2,8,1,7};

        int key = 8;

        try {
            int index = firstIndex(a, key);

            System.out.println(String.format("Found key at index %s", index));
        } catch (IllegalStateException ise) {
            System.out.println("No index found.");
        }
    }