Другие языки программирования и технологии
какой тип сортировки самый быстрый (С++\С)
Быстрая. Она так и называется - быстрая.
на сайте begemot777.blogspot.com есть прога для сортировки
На Ваш вопрос ответить невозможно. Вот некоторые соображения которые могут быть полезны:
1) минимальное время зависит от того что и как сортировать (то есть с помощью каких подходов) ;
2) для алгоритмов основанных на сравнении и обмене элементов вектора нижняя * теоретическая оценка времени работы в наихудшем случае O(n*log(n)) **
3) учитывая указанный выше факт, для выделенного класса алгоритмов со сложностью O(n*log(n)) быстрота будет отличаться в константое кол-во раз в худшем случае;
4) быстрая сортировка обладает достаточно малой константой (потому и быстрая) , но она имеет асимптотическое время работы O(n*log(n)) лишь в среднем, в худшем случае ее время работы O(n^2) (аналогичное времени сортировки пузырьком или вставками) , из-за ее свойств она применима только там, где не страшно что в некоторых случаях поиск будет производиться долго, то есть в алгоритме управления самолетом или баллистической ракеты ее лучше не использовать.
5) O(n*log(n)) может обеспечить алгоритм пирамидальной сортировки, при этом на практике он в среднем проигрывает быстрой сортировки в константное число раз, но не обладает ее недостатками;
6) для сортировки очень больших объемов данных не помещающихся в оперативной памяти имеет смысл использовать сортировку слиянием или различные многофазные ее вариации (время O(n*log(n)) );
7) если данные сортируются по числовым данным (мощность множества квантованных значений которых не велика) то можно применить алгоритм сортировки подсчетом, время работы которого O(n) (что намного лучше быстрой сортировки) ; также для числовых данных можно использовать хэширование;
8) если мы можем одновременно сравнивать более 2х значений, то есть мы можем использовать параллельные вычисления, то тут можно разработать качественно другие алгоритмы, например, можно использовать сортирующие сети с временем работы O(log^2(n));
9) самый самый быстрый вариант, если мы создадим оракула, который не глядя в данные предскажет какую перестановку надо применить к массиву, чтобы он стал отсортирован, и параллельно за O(1) переставим элементы;
* нижняя, то есть нельзя сортировать быстрее
** я ошибочно полагаю, что вы имеете представление об асимптотическом анализе и понятии О-большое, грубо говоря это то чему пропорционально время работы программы при больших объемах входных данных, то есть при больших n, где n размер сортируемого массива
1) минимальное время зависит от того что и как сортировать (то есть с помощью каких подходов) ;
2) для алгоритмов основанных на сравнении и обмене элементов вектора нижняя * теоретическая оценка времени работы в наихудшем случае O(n*log(n)) **
3) учитывая указанный выше факт, для выделенного класса алгоритмов со сложностью O(n*log(n)) быстрота будет отличаться в константое кол-во раз в худшем случае;
4) быстрая сортировка обладает достаточно малой константой (потому и быстрая) , но она имеет асимптотическое время работы O(n*log(n)) лишь в среднем, в худшем случае ее время работы O(n^2) (аналогичное времени сортировки пузырьком или вставками) , из-за ее свойств она применима только там, где не страшно что в некоторых случаях поиск будет производиться долго, то есть в алгоритме управления самолетом или баллистической ракеты ее лучше не использовать.
5) O(n*log(n)) может обеспечить алгоритм пирамидальной сортировки, при этом на практике он в среднем проигрывает быстрой сортировки в константное число раз, но не обладает ее недостатками;
6) для сортировки очень больших объемов данных не помещающихся в оперативной памяти имеет смысл использовать сортировку слиянием или различные многофазные ее вариации (время O(n*log(n)) );
7) если данные сортируются по числовым данным (мощность множества квантованных значений которых не велика) то можно применить алгоритм сортировки подсчетом, время работы которого O(n) (что намного лучше быстрой сортировки) ; также для числовых данных можно использовать хэширование;
8) если мы можем одновременно сравнивать более 2х значений, то есть мы можем использовать параллельные вычисления, то тут можно разработать качественно другие алгоритмы, например, можно использовать сортирующие сети с временем работы O(log^2(n));
9) самый самый быстрый вариант, если мы создадим оракула, который не глядя в данные предскажет какую перестановку надо применить к массиву, чтобы он стал отсортирован, и параллельно за O(1) переставим элементы;
* нижняя, то есть нельзя сортировать быстрее
** я ошибочно полагаю, что вы имеете представление об асимптотическом анализе и понятии О-большое, грубо говоря это то чему пропорционально время работы программы при больших объемах входных данных, то есть при больших n, где n размер сортируемого массива
Похожие вопросы
- сортировка массива. какой метод сортировки массива самый быстрый и эффективный?
- Какой самый быстрый браузер в мире?
- Самый быстрый и эффективный способ изучить учебник по программированию ?
- на каком языке выполняется самый быстрый код?)
- Проблема с алгоритмом быстрой сортировкой С++
- Добавить комментарии к коду С++ Быстрая Сортировка
- Изучил несколько простых алгоритмов сортировки, осталось изучить быструю и слияние, нужно ли вообще писать эти алгоритмы
- Сортировки, язык Си.
- C++ Сортировка в сортировке вектора экземпляров структуры
- Сортировка простыми вставками.