2009-12-03 3 views

ответ

3

Алгоритмы сортировки обычно изменяются в зависимости от характера данных, которые у вас есть.

Однако при сортировке и сортировке пузырьков легко понять (и реализовать) алгоритмы сортировки, их время выполнения - O (n^2), в худшее время, которое вы можете получить.

Что касается быстрой сортировки по аверситету, то требуется O (n log n), следовательно, это отличный вид. Однако в некоторых случаях он также может принимать O (n^2).

+1

Вы всегда можете посетить все перестановки в списке и вернуть первый, который сортируется (O (n!)) :) –

0

Wikipedia знает все.

Выбор сортировки в значительной степени сосет.

+0

Довольно много да, но вы можете быть более наглядными в своей критике :) –

1

Квадратичные алгоритмы времени, в зависимости от размера вашего набора данных, могут быть невероятно медленными.

п = 10e78 (о количестве атомов во Вселенной)

Для квадратичного алгоритма, это п * (10e78). Для алгоритма nlog (n), такого как quicksort или mergesort, это n * 262. Это огромная разница.

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

«Преждевременная оптимизация - это корень всего зла». -Sir Tony Hoare, популяризированный Дональдом Кнутом

+1

Это глупый пример. Никто никогда не попытается отсортировать предметы 10e78. «640K элементов должно быть достаточно для всех» - Билл Гейтс –

+0

Я согласен с первой частью вашего сообщения, но я не думаю, что выбор правильного/быстрого алгоритма сортировки является преждевременной оптимизацией. Кроме того, до тех пор, пока компоненты системы слабо связаны, алгоритм сортировки следует довольно легко заменить в более поздней оптимизации. –

+0

BTW, мне нравятся примеры с «числом атомов во вселенной», ставит все в перспективе :) –

0

Если данные, которые у вас есть, состоят только из положительных целых чисел, вы можете посмотреть на сортировку ковша. Алгоритм может иметь линейное время работы O (n) в правильных условиях.

+0

http://en.wikipedia.org/wiki/Bucket_sort –

Смежные вопросы