Обычный способ сравнения алгоритмов - использование Big-O-нотации (нотация Ландау) для описания ограничивающего поведения функции.
Только в (очень) краткое:
Предположим, у вас есть функция, которая принимает n элементов (алгоритм сортировки: размер вашей коллекции). Теперь мы смотрим на алгоритм и пытаемся выяснить, какое максимальное количество «шагов» (связанных с n ) необходимо завершить.
Некоторые алгоритмы завершаются в постоянное время (чтение Hashtable), которое составляет O(1)
. Если у вас есть алгоритм, который должен «смотреть» на каждый элемент один раз, это O(n)
(линейный), если вам нужно посмотреть на него дважды, то это O(2n)
(все еще линейный). Ссылка, которую я предоставил, содержит больше примеров.
Для распространенных алгоритмов O-обозначения хорошо известны. Но это не так уж сложно проанализировать существующий алгоритм. (Реальная задача состоит в том, чтобы придумать алгоритм для данной задачи, который быстрее, чем уже известное;))