【问题标题】:Finding the 10 highest frequencies in a randomized array-Java在随机数组中找到 10 个最高频率 - Java
【发布时间】:2019-04-29 01:53:33
【问题描述】:

项目描述是创建一个包含 1000 个从 1-50 的随机数字组成的数组,并按频率显示 10 个最高的数字。我减少了代码中的数字以便于测试。

我用随机数字创建了数组,并显示了每个数字出现的次数。

我无法弄清楚如何将数字从最高到最低排序。

任何帮助将不胜感激。

import java.util.*;  //import random class and arrays


class MaxArray{
   public static void main(String[]args){

      Random rand = new Random(1);  //create random object and sets seed to one

      int[] randArray = new int [51];
      int[] newArray = new int[51];

      for(int i = 0; i < randArray.length; i++){
         randArray[i] = rand.nextInt(50) + 1; // returns a single random integer between 1 and 50
         }
      Arrays.sort(randArray);
      System.out.println(Arrays.toString(randArray));

      for(int j = 0; j < randArray.length; j++){
         newArray[randArray[j]] += 1;     
         }
      System.out.println(Arrays.toString(newArray));

      for(int k = 0; k < newArray.length; k++){
         System.out.println("Number " + k + " occurred " + newArray[k] + " times");
         }    
   }// end main
}//end class

【问题讨论】:

  • 如果您只是想对整数进行排序,请在您的代码中实现此答案:stackoverflow.com/questions/7787754/…
  • “遇到麻烦”没有提供足够的信息来提供帮助。请参阅关于如何提问的 SO 常见问题解答:您至少应该花时间尽可能准确地描述“问题”。
  • 为什么需要将数字从高到低排序?
  • 仅供参考,您的第二个 for 循环(包含 newArray[randArray[j]] += 1; )已经在为您的 randArray 进行排序,我们称之为桶排序。

标签: java arrays sorting frequency


【解决方案1】:

这就是你从高到低的方式

for (int i = randArray.length-1; i >=0 ; i--) {
        System.out.print(randArray[i]+" ");

}

这就是你找到 10 个最高数字的方法:

 int CheckingDublicate = 0, count = 1;
    for(int i = 1; i <= randArray.length; i++){

        if(count<=10{
            if(CheckingDublicate!=randArray[randArray.length-i])
            {
                //Ignoring if dublicate
                System.out.print(randArray[randArray.length-i]+" ");
                CheckingDublicate = randArray[randArray.length-i];
                count++;
            }
        }
        else
            break;
    }

【讨论】:

  • “排序”的代码与排序无关。下一部分“查找 10 最高”会遇到很多问题:语法错误、命名约定错误、逻辑错误。
  • 因为它是错误的,我在之前的评论中已经给出了问题。这可能不完全是你的责任,因为最初的问题问得不好。
  • 嗯,首先,你的代码在语法和逻辑上都不正确。其次,您的描述是错误的(例如“这是您排序的方式......”但代码与排序无关)。第三,您甚至没有回答这个问题:他要求最高频率,而您的代码只是在寻找最高数值。所以这也不仅仅是 OP 的问题。
猜你喜欢
  • 1970-01-01
  • 2017-07-18
  • 2016-06-29
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 2015-01-03
相关资源
最近更新 更多