Нахождение 10 самых высоких частот в рандомизированном массиве Java - PullRequest
0 голосов
/ 29 апреля 2019

Описание проекта - создать массив из 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

1 Ответ

0 голосов
/ 29 апреля 2019

Вот как вы получаете от высшего к низшему

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;
    }
...