Другие языки программирования и технологии

Говорят что готовые алгоритмы сортировок и поиска мало эффективны и не пригодны в использовании

Но они полезны в обучении и развивают алгоритмические мышление, и позволяют понять принцип поиска и сортировки в компьютерной системе, а вот чтобы реализовать реальный поиск для своего проекта нужно разрабатывать на основе этих свои алгоритмы. В некоторых языках уже есть готовые методы для сортировок и поиска в массиве, и даже есть готовые библиотеки. Так вот мне обязательно писать с нуля колесо или можно воспользоваться средствами которые предлагает сам язык и сторонние библиотеки? Наверное целесообразнее воспользоваться уже готовым и проверенным решением, чем с нуля изобретать колесо. А как думаете Вы ?
Знание свойств разных алгоритмов сортировок - это стандартный этап обучения программированию. Который, в частности, позволяет оценить применимость библиотечной функции сортировки в каждом конкретном случае и если она не подходит, реализовать оптимальный для данного случая алгоритм.

Готовые библиотечные функции рассчитываются на типичную ситуацию, когда время сравнения соизмеримо с временем обмена. Так что в подавляющем большинстве случаев надо использовать именно высокоэффективное готовое решение.

Но попробуй посмотреть, как поведет себя библиотечная сортировка в алгоритме BWT. Для BWT придумывают специальные методы сортировки: загляни, например, в исходники архиватора bzip2, реализующего BWT.
Антон Спесивцев
Антон Спесивцев
97 467
Лучший ответ
Ильдус Мухаметшин Не нужно писать "умности", тем, кто начинает свой вопрос с "Говорят что..."

Какой смысл? Он этого всё равно не поймёт. Разве нет?!
>Говорят что готовые алгоритмы сортировок и поиска мало эффективны
Ну так и плюнь им в морду. Quicksort вполне себе быстр и эффективен.

>Так вот мне обязательно писать с нуля колесо или можно воспользоваться средствами
Пользуйся, не изобретай велосипеды. Такими изобретениями можно заниматься только в некоторых специальных случаях, например, когда у тебя есть очень много данных, обладающих при этом низкой cardinality (ХЗ как по-русски), но даже в этом случае стандартные библиотеки работают вполне сносно.
Ильдус Мухаметшин Не просто поддерживаю, а ОЧЕНЬ поддерживаю.

1985 год. Новое предприятие. И АСУШники, которые при расчёте зарплаты занимают практически всё машинное время (а у них ФОБРИН, который "сам" как-то сортирует ЧАСАМИ! данные по 20-30 тысячам человек) меня достали. И как раз появился компилятор с Си.

Я плюнул на это издевательство, полистал Кнута (Том 2-ой. Сортировка и Поиск) и написал свою программу на Си, которая сортировала в ДЕСЯТКИ раз быстрей. Да, да, да... И именно, Quicksort!

И машинное время перестало быть проблемой. Так и было...
Не нужно писать "умности", тем, кто начинает свой вопрос с "Говорят что..."

Какой смысл? Он этого всё равно не поймёт. Разве нет?!
Евгений Дёгтев
Евгений Дёгтев
88 301
не знаю, у меня хобби на ровном месте изобретать свои собственные колёса.
правда, они, как правило, получаются квадратные.
ЛВ
Лёха Высочин
62 679
Ну если ты умнее академиков-математиков, создавших целую теорию сортировки, то флаг тебе в руки.
Петр Селиванов
Петр Селиванов
19 976
Алгоритмы сортировок и поиска уже давно вдоль и поперек изучены. Можно самому реализовать, там ничего сложного нет, чтобы париться этим вопросом.
Опять же, вероятно у тебя таким образом структурированы данные, что отсортировать их стандартными функциями нельзя. Функция может быть заточена под массив, а у тебя односвязный список.
Ещё есть нюансы, заключающиеся в том, что в определённых условиях один алгоритм будет быстрее, а других - другой.
В твоей предметной области должны быть особенности, которыми воспользоваться для ускорения сортировки.