Другие языки программирования и технологии
Говорят что готовые алгоритмы сортировок и поиска мало эффективны и не пригодны в использовании
Но они полезны в обучении и развивают алгоритмические мышление, и позволяют понять принцип поиска и сортировки в компьютерной системе, а вот чтобы реализовать реальный поиск для своего проекта нужно разрабатывать на основе этих свои алгоритмы. В некоторых языках уже есть готовые методы для сортировок и поиска в массиве, и даже есть готовые библиотеки. Так вот мне обязательно писать с нуля колесо или можно воспользоваться средствами которые предлагает сам язык и сторонние библиотеки? Наверное целесообразнее воспользоваться уже готовым и проверенным решением, чем с нуля изобретать колесо. А как думаете Вы ?
Знание свойств разных алгоритмов сортировок - это стандартный этап обучения программированию. Который, в частности, позволяет оценить применимость библиотечной функции сортировки в каждом конкретном случае и если она не подходит, реализовать оптимальный для данного случая алгоритм.
Готовые библиотечные функции рассчитываются на типичную ситуацию, когда время сравнения соизмеримо с временем обмена. Так что в подавляющем большинстве случаев надо использовать именно высокоэффективное готовое решение.
Но попробуй посмотреть, как поведет себя библиотечная сортировка в алгоритме BWT. Для BWT придумывают специальные методы сортировки: загляни, например, в исходники архиватора bzip2, реализующего BWT.
Готовые библиотечные функции рассчитываются на типичную ситуацию, когда время сравнения соизмеримо с временем обмена. Так что в подавляющем большинстве случаев надо использовать именно высокоэффективное готовое решение.
Но попробуй посмотреть, как поведет себя библиотечная сортировка в алгоритме BWT. Для BWT придумывают специальные методы сортировки: загляни, например, в исходники архиватора bzip2, реализующего BWT.
>Говорят что готовые алгоритмы сортировок и поиска мало эффективны
Ну так и плюнь им в морду. Quicksort вполне себе быстр и эффективен.
>Так вот мне обязательно писать с нуля колесо или можно воспользоваться средствами
Пользуйся, не изобретай велосипеды. Такими изобретениями можно заниматься только в некоторых специальных случаях, например, когда у тебя есть очень много данных, обладающих при этом низкой cardinality (ХЗ как по-русски), но даже в этом случае стандартные библиотеки работают вполне сносно.
Ну так и плюнь им в морду. Quicksort вполне себе быстр и эффективен.
>Так вот мне обязательно писать с нуля колесо или можно воспользоваться средствами
Пользуйся, не изобретай велосипеды. Такими изобретениями можно заниматься только в некоторых специальных случаях, например, когда у тебя есть очень много данных, обладающих при этом низкой cardinality (ХЗ как по-русски), но даже в этом случае стандартные библиотеки работают вполне сносно.
Ильдус Мухаметшин
Не просто поддерживаю, а ОЧЕНЬ поддерживаю.
1985 год. Новое предприятие. И АСУШники, которые при расчёте зарплаты занимают практически всё машинное время (а у них ФОБРИН, который "сам" как-то сортирует ЧАСАМИ! данные по 20-30 тысячам человек) меня достали. И как раз появился компилятор с Си.
Я плюнул на это издевательство, полистал Кнута (Том 2-ой. Сортировка и Поиск) и написал свою программу на Си, которая сортировала в ДЕСЯТКИ раз быстрей. Да, да, да... И именно, Quicksort!
И машинное время перестало быть проблемой. Так и было...
1985 год. Новое предприятие. И АСУШники, которые при расчёте зарплаты занимают практически всё машинное время (а у них ФОБРИН, который "сам" как-то сортирует ЧАСАМИ! данные по 20-30 тысячам человек) меня достали. И как раз появился компилятор с Си.
Я плюнул на это издевательство, полистал Кнута (Том 2-ой. Сортировка и Поиск) и написал свою программу на Си, которая сортировала в ДЕСЯТКИ раз быстрей. Да, да, да... И именно, Quicksort!
И машинное время перестало быть проблемой. Так и было...
Не нужно писать "умности", тем, кто начинает свой вопрос с "Говорят что..."
Какой смысл? Он этого всё равно не поймёт. Разве нет?!
Какой смысл? Он этого всё равно не поймёт. Разве нет?!
не знаю, у меня хобби на ровном месте изобретать свои собственные колёса.
правда, они, как правило, получаются квадратные.
правда, они, как правило, получаются квадратные.
Ну если ты умнее академиков-математиков, создавших целую теорию сортировки, то флаг тебе в руки.
Алгоритмы сортировок и поиска уже давно вдоль и поперек изучены. Можно самому реализовать, там ничего сложного нет, чтобы париться этим вопросом.
Опять же, вероятно у тебя таким образом структурированы данные, что отсортировать их стандартными функциями нельзя. Функция может быть заточена под массив, а у тебя односвязный список.
Ещё есть нюансы, заключающиеся в том, что в определённых условиях один алгоритм будет быстрее, а других - другой.
Опять же, вероятно у тебя таким образом структурированы данные, что отсортировать их стандартными функциями нельзя. Функция может быть заточена под массив, а у тебя односвязный список.
Ещё есть нюансы, заключающиеся в том, что в определённых условиях один алгоритм будет быстрее, а других - другой.
В твоей предметной области должны быть особенности, которыми воспользоваться для ускорения сортировки.
Похожие вопросы
- Изучил несколько простых алгоритмов сортировки, осталось изучить быструю и слияние, нужно ли вообще писать эти алгоритмы
- Теория алгоритмов. Алгоритмы сортировки.
- какие алгоритмы сортировки есть на С# (С++)?
- Самый оптимальный алгоритм сортировки в плане производительности
- Проблема с алгоритмом быстрой сортировкой С++
- сортировка массива. какой метод сортировки массива самый быстрый и эффективный?
- В корзине лежит 20 яблок. Напишите алгоритм поиска наибольшего по размеру яблока.
- Не могу сообразить каким алгоритмом задать сортировку, подскажите, пожалуйста
- Сортировки, язык Си.
- C++ Сортировка в сортировке вектора экземпляров структуры
Какой смысл? Он этого всё равно не поймёт. Разве нет?!