#java #arrays #histogram
#java #массивы #гистограмма
Вопрос:
Привет, я действительно сбит с толку этим методом, который я должен создать. Мне нужно создать массив гистограмм с категориями деления num, т. е. выбрать разумный диапазон целых чисел и размер шага для numdivisons, чтобы охватить весь диапазон элементов в массиве. @возвращает гистограмму массива, в позиции i которой содержится * количество наблюдений в подразделении i */
пример: {1,3,4,5,10,15,17}.
Если numdivisions=2, то нам нужно разделить диапазон (от 1 до 17) на 2 подразделения. Например, диапазон от 0 до 10 (не включен) и от 10 до 20. В этом случае имеется 4 значения в диапазоне от 0 до <10 и 3 значения от 10 до 20.
Эта гистограмма для numdivisions= 2 будет представлять собой массив {4,3}.
public int[] гистограмма (int numdivisions) кто-нибудь может сказать мне, какой был бы лучший способ сделать это? Спасибо
Комментарии:
1. для моего понимания задачи вам нужно создать разделение, где количество элементов во всех подмассивах равно ( -1, если размер% разделов != 0) я прав?
2. нет, я так не думаю .. это означает, что это означает, что если пользователь вводит numdivsions, то мы должны создать stepsize, в который попадает каждый из наших элементов. например. {1,2,3,4,56} и numdivisions, скажем, 3. тогда размер шага был бы 1-3 и 4-56. таким образом, новый массив будет равен {3,2}, т.е. сколько элементов попадает в размер каждого шага. вы понимаете, что я имею в виду? 😮
Ответ №1:
Простой:
- Получите минимальный и максимальный элементы вашего массива
- Возьмите разницу и разделите ее на num, получая «шаг»
- Теперь выполните итерацию по массиву, поместив число n в слот i таким образом, чтобы i * step <= n — min < (i 1) * step
Комментарии:
1. да. спасибо. можете ли вы, пожалуйста, попытаться объяснить, что вы сделали на шаге 3? я имею в виду, откуда взялось n? n — это количество элементов?
2. «n» — это текущий элемент, с которым вы выполняете итерацию.