Если взять конкретный пример, то лучше всего, кажется, подходят алгоритмы сортировки массивов. Они очень хорошо исследованы, их много разных.
Известен факт, что сложность любого алгоритма сортировки по вычислению
при условии, что элементарной операцией алгоритма является сравнение двух элементов массива.
Устойчивые алгоритмы:
Пузырьковая сортировка (Bubble sort): сложность вычислений
, используемая память
.
Сортировка перемешиванием (Cocktail sort): сложность вычислений
, используемая память
.
Сортировка вставками (Insertion sort): сложность вычислений
, используемая память
.
Сортировка с помощью двоичного дерева (Tree sort): сложность вычислений
, используемая память
.
Сортировка слиянием (Merge sort): сложность вычислений
, используемая память
.
Сортировка Timsort: сложность вычислений
, используемая память
.
Неустойчивые алгоритмы:
Пирамидальная сортировка (Heapsort): минимальная, максимальная и средняя сложность вычислений
, используемая память
.
Быстрая сортировка (Quicksort): средняя сложность вычислений
, в худшем случае
, используемая память
. Примечание: при использовании
дополнительной памяти, можно сделать сортировку устойчивой.