Как говорится в названии, я пытаюсь подсчитать количество повторений значений в одном массиве. Так, например, если бы существовал массив со значениями 1, 1, 2, 2, результат выглядел бы примерно так: Значение (1) произошло (2) раза \ n Значение (2) произошло (2) раза. Вот то, что я до сих пор:Как я могу подсчитать количество повторений значений в одном массиве?
foreach (var i in anArray)
{
foreach (var m in secondArray)
{
if (i == m)
{
count++;
}
}
Console.WriteLine("\nValue " + i + " occurred " + count + " times");
}
Я создал копию первого массива (secondArray) и пытаюсь сделать из-за сравнения массивов, но что-то не так. Вложенный цикл подсчитывает мои значения дважды. Итак, где бы он сказал: значение (1) произошло (2) раза, следующее показание говорит: значение (1) произошло (4) раз, вместо перехода к следующему значению, которое не является (1). Я понимаю, что он подсчитывает второй (1) и добавляет предыдущий счет к нему ... по крайней мере, я думаю, что понимаю. Как я могу обойти это только с помощью массивов и списков?
Сложность O (N^2) немного неудачное. –
Почему вы сделали второй массив? –
Какова природа чисел в массиве .. могут ли они быть сколь угодно большими? они, как правило, малы - например, ниже определенного небольшого числа? могут ли числа в массиве быть -ve? Насколько велика может быть массив? нормально ли использовать дополнительную память для получения ответа? Есть ли проблема в работе алгоритма? –