C # структура данных для поиска текущего элемента на основе диапазонов - PullRequest
1 голос
/ 21 марта 2019

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

Представьте, что вы пытаетесь узнать свою награду за высокий балл.

Элементы будут выглядеть примерно так: 0 - ничего 100 - серебряная звезда 300 - золотая звезда

Затем я бы хотел быстро оценить мою текущую награду или любой общий предмет на основе моего текущего счета. Если я пройду 270, я получу серебряную звезду.

Когда мне сначала пришлось реализовать что-то подобное, я использовал список дуплей, первое значение - числовой пол, а второе - элемент. Конечно, это работает. Но, конечно же, по мере роста списка увеличивается и время поиска.

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

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

1 Ответ

1 голос
/ 21 марта 2019

Попробуйте это:

var levels = new []
{
    new { score = 0, level = "nothing" },
    new { score = 100, level = "silver" },
    new { score = 300, level = "gold" },
};

var score = 270;

var level = levels.OrderBy(x => x.score).Where(x => x.score <= score).Last().level;

Console.WriteLine(level);

Это дает мне silver на консоли.

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