• Какой будет самый производительный алгоритм сортировки?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Сложность сортировки в общем случае будет O(N*log(N)).

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

    Вот пример для вашего случая.
    spoiler
    Что есть "большое число"? Предположим, это число от 90 до 100.

    Предположим, у вас значения распределены в массиве более или менее равномерно (имеется в виду частота встречаемости). На самом деле не важно, какое распределение, главное знать, какое оно. В любом случае это дополнительное условие. То есть если про массив не известно ничего, то можно либо предположить это дополнительное условие, сославшись на отсутствие прочих данных, либо поменять программу так, чтобы оно соблюдалось.

    Таким образом, если распределение равномерно, то большие числа составляют примерно 10% от общего количества элементов. На самом деле важнее всего, что пороговое число - 90.

    Теперь мы можем сортировать массив простым алгоритмом сложности O(N) - просто на две кучи: большие и маленькие числа. Делим массив в соотношении 1 к 10, ну и сортируем за один проход. Конечно, будут накладки, но в целом это должно быть не критично. Отсутствие важности - это тоже дополнительное условие, увы.

    В результате такой стремительной сортировки вы получаете самые большие числа в начале и остальные в конце. Дальше можно скормить это вашей формуле.
    Ответ написан
  • База данных компании, правильно ли?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    правильно ли?
    Нет.
    Например,
    Company could be located in one or several cities
    , а у вас в одном.
    И не забывайте о физической модели: здание находится в городе, а не наоборот.

    Company (ID, Name)

    Не совсем понял почему неправильно
    Правильно:
    City (ID, Name), 
    Building (ID, City (FK City), Name), 
    Location (ID, Building (FK Building), Company (FK Company), Name)


    можете помочь с последними тремя пунктами?
    Может у меня плохой английский, но в
    An Employee passes Assessment procedure once a year.
    нет определённости: есть ли определённый срок проверки или следующая проверка не меньше, чем через год.
    А модель: Персона, Должность, Контракт, Сотрудник, Проверка.
    Опять же
    Employees have a Contract
    Контракт на персону или должность?
    Ответ написан
    2 комментария
  • Почему значение GetHashCode нельзя сохранять?

    @GameDev_Easy
    Сегодня я пишу на змеях...
    GetHashCode - не для криптограафии! Он может менятся.

    Используйте System.Security
    Ответ написан
    Комментировать
  • Почему значение GetHashCode нельзя сохранять?

    GavriKos
    @GavriKos
    Можно сохранять. Только стоит помнить, что GetHashCode мало того что может меняться от версии дотнета, так и еще может никак не коррелировать с содержимым переменной.

    Для случая с регистрацией пользователя используйте фиксированные алгоритмы, типа того же md5
    Ответ написан
    1 комментарий
  • Для чего все-таки нужны интерфейсы?

    @kova1ev
    Представь у тебя есть какой-нибудь метод, который принимает в агрументах объект, например, типа User
    doSomething(User user)
    Ты можешь передавать в этот метод любой объект типа User или объекты классов, наследующих User.
    Но можно сделать еще гибче, например описать некий интерфейс UserInteface и указать в определении метода его:
    doSomething(UserInterface user)
    Теперь ты можешь передавать в метод объект любого класса, который реализует интерфейс UserInterface.
    Разумеется, изначальный класс User из этого примера тоже должен реализовывать этот интерфейс.

    То есть, указывая в типе данных параметра какой-то конкретный класс, ты привязываешься к этому классу или его наследникам, а указывая интерфейс ты привязываешься к этому интерфейсу, который может реализовать любой другой класс, связность уменьшается, а это хорошо. А если ты в этих, еще не написанных классах будешь просто писать нужные методы, то не сможешь объект этих классов использовать, тип данных то будет другой, хотя методы и будут описаны.

    И, как уже написали выше, один класс может реализовывать несколько интерфейсов.
    Ответ написан
    Комментировать