Троллинг на собеседовании. "Сверхбыстрый" алгоритм сортировки и огромное большое О (или наоборот)

Поделиться
HTML-код
  • Опубликовано: 24 ноя 2022
  • Когда Большое О не помогает. Будьте внимательные к реальной скорости работы алгоритмов при сравнении их характеристик
    Код примера
    share.linqpad.net/m4ghsq.linq
    Подробности для любознательных:
    rosettacode.org/wiki/Sorting_...

Комментарии • 16

  • @BYGUR
    @BYGUR Месяц назад +1

    Эта самая компания не знает, что кром "О большого" существует еще и "о малое", а также Ω, ω и Θ и θ. И они любят оценивать в т.ч. "О большое снизу". Гуманитарии, которые начитались про матан на хабре и довольные собой дрючат выпускников технических вузов.

    • @itchatter
      @itchatter  6 дней назад +1

      Просто оставлю это здесь: habr.com/ru/articles/204580/ :-)

  • @phyllobolus
    @phyllobolus Год назад +5

    Сортировка за линейное время существует, это сортировка подсчётом. Кроме того, хоть в этом алгоритме на первый взгляд и O(n) шагов, не у всех из этих шагов одинаковое время выполнения, и, вообще говоря, правильная оценка работы алгоритма это должна учитывать. Далее, какая-то часть библиотеки языка или даже операционная система должна эти таймеры в правильном порядке выполнить, а для этого значения нужно ... отсортировать, ба-думтс.
    Троллинг был бы удачнее, если бы вы рассказали про т.н. галактические алгоритмы.

    • @itchatter
      @itchatter  Год назад

      Спасибо за содержательный комментарий. Кстати, если присмотреться то сортировка таймером и сортировка подсчетом идейно очень близки. Но с таймером гораздо веселее :-).

    • @itchatter
      @itchatter  Год назад

      Примером сортировки таймером может быть, например, сортировка вагонов по номерам на горке. Спускаем вагон с горки через время равное номеру вагона в минутах. В результате получаем упорядоченный состав за n минут.

    • @phyllobolus
      @phyllobolus Год назад

      @@itchatter за какое время вы выбираете нужный вагон? Мне кажется, вы получили сортировку пузырьком.

    • @phyllobolus
      @phyllobolus Год назад

      @@itchatter да, я тоже сначала хотел написать, что это сортировка подсчётом, пока не подумал про сложность работы шедулера...

    • @antonrrtyq
      @antonrrtyq Год назад +1

      мне больше нравится таймер ))0)0)

  • @user-dx2iw1hm3d
    @user-dx2iw1hm3d Год назад +1

    тут разве не О(1), если за константу брать наибольшее из чисел в массиве?

    • @itchatter
      @itchatter  Год назад

      Хорошее наблюдение. И, кстати, очень похоже что да, но! Чтобы найти это самое большое число все равно надо будет перебрать все элементы, а это опять n.

    • @BYGUR
      @BYGUR Месяц назад

      О(1) не зависит от набора данных. Если "константа зависит от содержимого массива", то это уже не константа.

    • @Kolodan
      @Kolodan 12 дней назад

      Так когда мы считаем O от чего-то, то мы выкидываем все константы и все, что очень быстро отрабатывает. В данном случае скорость перебора массива явно быстрее, чем sleер с минимальным значением. Значит, самое длинное время - при самом большом элементе. Или я вообще ничего не понял и написал херню)))

  • @itchatter
    @itchatter  9 месяцев назад

    Я думал что сортировка временем это шутка пока не прочитал этот твит::» I just solved a modal stacking z-index issue by setting the z-index to the amount of time a user has spent on the page using the JS performance interface... thus every new modal opened has a higher z-index.«
    оригинал: x.com/alexjgarrett/status/1711855242290077701?s=46&t=pSUUZwB1G2U9ZdLF7-sH7Q

  • @user-dv2et9ij3z
    @user-dv2et9ij3z Месяц назад

    Radix Sort для слабаков