【问题标题】:Using Linear Search to count the time each value is matched in the Array[]使用线性搜索计算每个值在 Array[] 中匹配的时间
【发布时间】:2015-04-16 07:44:52
【问题描述】:

所以我正在编写一个程序,该程序生成 0 到 9 之间的 100 个随机整数并将它们存储在一个 Array[ 中,使用线性搜索来计算每个值在 Array[] 中匹配的时间。值需要出现多次,因此线性搜索需要遍历 Array[]

中的所有元素

到目前为止我得到的是这个

public static void main(String[] args) {
    int[] randomNumbers = new int[100];

    for(int index = 0; index < randomNumbers.length; index++)
    {
        randomNumbers[index] = (int) (Math.random()*100);
    }

    for(int index = 0; index < randomNumbers.length; index++)
    {
        System.out.println(randomNumbers[index]);
    }

}

}

【问题讨论】:

  • 好吧,我先编写代码来生成数组 - 我个人建议使用 java.util.Random.nextInt() 而不是 Math.random()... 一旦你有了数组,你就可以开始考虑如何计算条目。 (提示:你有一个小的已知范围的数字真的很有帮助。你可能想要第二个数组......)
  • 您能详细解释一下吗?
  • @AndrewJones 数组的值从 0 到 9,可以构成长度为 10 的第二个数组的索引,其中第二个数组的每个值都包含与它的索引:secondArray[3] 将包含 3 包含在 firstArray 中的次数。

标签: java linear-search


【解决方案1】:

也许不是您正在寻找的,而是一种使用 HashMap 计算多个对象实例的简单方法,这是您的随机代码生成器的示例:

public static void main(String[] args) {

    int[] randomNumbers = new int[100];
    HashMap<Integer, Integer> map = new HashMap<>();

    //Generate 100 random ints
    for (int index = 0; index < randomNumbers.length; index++) {
        randomNumbers[index] = (int) (Math.random() * 100);
    }

    //Count occurrences of numbers in randomNumbers
    for (int index = 0; index < randomNumbers.length; index++) {

        //Get value of key 'randomNumbers[index]
        Integer count = map.get(randomNumbers[index]);

        //If key didn't exist create it, else increment the value of occurrences.
        if (count == null) {
            map.put(randomNumbers[index], 1);
        } else {
            map.replace(randomNumbers[index], count + 1);
        }
    }

    //Print mappings
    System.out.println(map.toString());
}

【讨论】:

    猜你喜欢
    • 2020-11-17
    • 2021-11-02
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多