Правильно, поэтому у меня есть алгоритм сортировки по 2 части. Все это основано на массиве из 14 случайных чисел. Например:Создание пользовательского сортировки для массива целых чисел?
int[] a = {9,2,4,8,9,4,3,2,8,1,2,7,2,5};
Теперь, первая вещь, которую я пытаюсь выяснить, как сделать это, чтобы подсчитать, сколько определенное количество существует в исходном массиве. Итак, мы знаем, что 1 существует один раз, а 2 существует четыре раза в исходном массиве. Но так просто, как визуально видеть это, что, если у нас нет доступа к исходному массиву. Поэтому мне нужно создать метод, который будет подсчитывать количество каждого числа 1-9 и помещать его в новый массив с именем count. Таким образом, индекс 0 в count будет представлять собой целое число 1 и будет иметь значение 1. Индекс 1 будет представлять собой целое число 2 и имеет значение 4. И так далее и т. Д. Вот что у меня есть, но я застрял. Сортировка для меня довольно сложна.
public static void main(String[] args)
{
// int[] countFinal = {1,4,1,2,1,0,1,2,2}; // The number of times a number 1-9 appears in a[].
// int[] sortedFinal = {1,2,2,2,2,3,4,4,5,7,8,8,9,9}; // What we need as a final product.
int[] a = {9,2,4,8,9,4,3,2,8,1,2,7,2,5};
//int[] count = {};
int[] sorted = {};
countHowMany(a, 1);
countHowMany(a, 2);
countHowMany(a, 3);
countHowMany(a, 4);
countHowMany(a, 5);
countHowMany(a, 6);
countHowMany(a, 7);
countHowMany(a, 8);
countHowMany(a, 9);
}
public static int countHowMany(int[] array, int value)
{
// Gathering a count for how many times a number 1-9 exists and adding it to count[];
int howManyCount = 0;
for (int i = 0; i < array.length; i++)
{
if (array[i] == value)
{
howManyCount++;
}
}
System.out.println(howManyCount);
count = new int[9];
count[howManyCount];
System.out.println(Arrays.toString(count); // Testing the input
return howManyCount;
}
Похоже, что подсчет количества раз, когда элемент в массиве существует правильно. Теперь я просто должен выяснить, как добавить значение в новый массив count [] и сделать это для каждого countHowMany(). Это та часть, на которую я застрял.
Как только я вычислил счет [], я могу использовать его для создания отсортированного []. Теперь, что должно быть сделано, нужно взять данные из исходного массива и count [] и создать новый массив, который сортирует его в порядке возрастания и позволяет дублировать. Таким образом, поскольку 1 происходит один раз и 2 происходит четыре раза, новый массив будет сортироваться [] = {1, 2, 2, 2, 2, ...}
Это относительно небольшая программа и небольшое количество целые числа, поэтому вполне нормально, что я создаю массив по мере необходимости. Ключевым моментом является то, что я ограничен использованием массивов и не могу использовать для этого аргументы ArrayLists.
Почему бы не использовать карту? – xuesheng
Возможный дубликат [Количество экземпляров Java в каждом элементе массива] (http://stackoverflow.com/questions/8098601/java-count-occurrence-of-each-item-in-an-array) – dognose
@xuesheng Для кто-то, кто просто узнает о массивах, «Карта» действительно не будет полезен. Гораздо лучше придерживаться основных идей, пока они не будут твердо закреплены, и только затем начнут использовать более продвинутые функции. –