Как сортировать числа - PullRequest
       3

Как сортировать числа

0 голосов
/ 20 апреля 2010

Мне нужна помощь, чтобы справиться со следующей логикой. Программа получает много целых чисел, например, 10,16,3,17,21,29,6.

Логика должна быть сделана:

Сценарий 1:

Сначала выберите 4 самых больших числа ввода, которые 16,17,21,29. Теперь присвойте значения A, B, C и D:

  • A = наименьшее из выбранных 4
  • B = самый большой в выбранном 4
  • C = второй самый маленький в выбранном 4
  • D = третий наименьший в выбранном 4

Результат для отображения:

A = 16
B = 29
C = 17
D = 21

Сценарий: 2

Если пользователь дает 3 входа, например 3,6,10, назначить только A, B, C и должен игнорировать D

Результат, который будет отображен:

A = 3
B = 10
C = 6

Ответы [ 4 ]

1 голос
/ 20 апреля 2010

Похоже, это может быть заданием, поэтому я дам вам следующие советы:

Если у вас есть все эти числа в массиве, вы можете попробовать частично отсортировать массив. Напишите простую пузырьковую сортировку, и пусть она сортирует самые большие числа вперед. Но вместо сортировки всего массива остановите его после того, как он поместит 4 самых больших элемента в начало массива.

Таким образом, ваш первый элемент будет вашим самым большим и так далее. Оттуда вы можете легко делать все остальное, что вам нужно.

Надеюсь, это помогло.

1 голос
/ 20 апреля 2010

Логика:

  1. Сортировка по убыванию
  2. Выберите 4 верхних элемента
  3. Назначьте значение согласно вашему требованию в A, B, C, D
1 голос
/ 20 апреля 2010

Предполагая, что у вас есть входные значения в массиве, вы можете отсортировать их, используя статический метод Array.Sort(), а затем выбрать верхний / нижний значения путем индексации (например, values[value.Length - 1] получает самое высокоезначение).Обязательно выполните некоторые проверки границ, чтобы избежать исключений во время выполнения и правильно решить «сценарий 2» назначения.

Если вы хотите что-то более современное, вы также можете использовать магию LINQ, чтобы получить первые 4items:

values = values.OrderByDescending(i => i).Take(4).ToArray();

Четыре максимальных значения теперь находятся в highOnes для печати в любом порядке.Еще раз, убедитесь, что сделали некоторые проверки границ - в массиве может быть меньше четырех чисел.

1 голос
/ 20 апреля 2010

Я бы взял данные и сохранил их в список.Я бы тогда отсортировал этот список.После сортировки вы можете вытащить номера по мере необходимости.

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