Получить верхние значения nth из прямоугольного массива - PullRequest
0 голосов
/ 02 июня 2010

Я читаю текстовый файл для строк, которые представляют целые числа. Файл разделен пробелом. Я создал массив [10,2]. Каждый раз, когда строки 1 ~ 10 находятся в файле, я увеличиваю массив [n, 0] на 1. Я также добавляю массив [n, 1] с номерами 1 ~ 10.

т.е. Содержимое txt файла:

1/1/1 10/1/2001 1 1 10 2 2 3 1 5 10 word word 3 3 etc..
  • Streamreader читает 1/1/1 и определяет, что это не 1 ~ 10
  • streamreader читает 01.10.2001 и определяет, что это не 1 ~ 10
  • Streamreader читает 1 и ++ массив [0,0]
  • Streamreader читает 1 и ++ массив [0,0]
  • Streamreader читает 10 и ++ массив [9,0]
  • и т.д ..

Результат будет:

  • '1' был найден 3 раза
  • '2' был найден 2 раза
  • '3' был найден 3 раза
  • '5' был найден 1 раз
  • '10 'был найден 2 раза

Моя проблема в том, что мне нужно, чтобы этот массив располагался в порядке (отсортирован) по значению столбца 0 так что было бы:

1
3
2
10
5

2-ой столбец в массиве, так что я могу сказать, какой оригинал (строка, которая была найдена больше всего) был. пример: массив [0,0] = 5 // сколько раз '1' был найден в текстовом файле array [0,1] = 1 // это так, я знаю после сортировки, что значение array [0,0] было для '1' массив [1,0] = 10 // сколько раз '2' было найдено в текстовом файле array [1,1] = 2 // это так, я знаю после сортировки, что значение array [1,0] было для '2'

до того, как у меня был только один деминсионный массив. Когда я отсортировал массив, у меня не было возможности узнать, каково было исходное значение массива [0], поэтому я решил создать массив записей, чтобы массив [0,1] переключался с 1 на 2, чтобы я мог знать, какая строка на самом деле показывает до самого. это делает больше с тех пор?

1 Ответ

0 голосов
/ 02 июня 2010

В качестве рекомендации, возможно, вы могли бы рассмотреть возможность использования словаря от int до int. Таким образом, вы можете поддерживать n цифр (а не фиксированный диапазон). Хотя я не уверен, что понимаю, что еще хранит второе измерение массива?

Чтобы вывести их в порядке, используя ваше текущее решение, предполагая, что ваш мульти-массив называется _countsIndexedByValues;

var orderedCounts = _countsIndexedByValues.Select((innerArr, i) => new { Count = innerArr[0], Value = i}).OrderBy(u => u.Count);
orderCounts.ToList().ForEach(u => Console.Out.WriteLine(String.Format("'{0}' was found {1} times", u.Value, u.Count);

Это использует как LINQ, так и анонимные типы ... Там, где я использовал анонимный тип, вы можете использовать пару или что угодно еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...