сортировать Выбор:
Трудоемкость будет оставаться такой же (как это без предположения 2 ключа), он не зависит от значений массивов, только количество элементов ,
Временная сложность для выбора рода в этом случае O(n^2)
Однако, это справедливо только для оригинального алгоритма, который сканирует весь хвост массива для каждой внешней итерации цикла. если вы оптимизируете его, чтобы найти следующий «0», на итерации i
, так как вы уже «очистили» первые i-1
нулей, то первое нулевое местоположение находится в индексе 2i
. Это означает, что каждый раз внутренний цикл должен выполнять итерации 2i-(i-1)=i+1
.
Подводя это будет:
1 + 2 + ... + n = n(n+1)/2
Который, к сожалению, до сих пор в O(n^2)
.
Другой оптимизацией может быть «remmber», где вы остановились в последний раз. Это значительно улучшит сложность до O(n)
, так как вам не нужно проходить один и тот же элемент более одного раза - но это будет другой алгоритм, а не сортировка сортировки.
вставки Сортировать:
Здесь все сложнее. Следует отметить, что во внутреннем цикле (взятой из wikipedia), количество операций зависит от значений:
while j > 0 and A[j-1] > x
Однако напомним, что в то вставки, после i
-й стадии, первые i
элементы сортируются. Поскольку мы принимаем P(x=0)=P(x=1)
, среднее значение i/2 элементов равно 0, а i/2 - 1.
Это означает, что средняя временная сложность для внутреннего цикла равна O(i/2)
.
Суммируя это вверх поможет вам:
1/2 + 2/2 + 3/2 + ... + n/2 = 1/2* (1+2+...+n) = 1/2*n(n+1)/2 = n(n+1)/4
Вышесказанное, однако, до сих пор в O(n^2)
.
выше не является формальным доказательством, поскольку он неявно использует E(f(E(x)) = E(f(x))
, что не так, но он может дать вам руководящих принципов, как формально построить ваше доказательство.
Fisrt вообще вы должны иметь в виду, что означает Time Complexity. http://en.wikipedia.org/wiki/Time_complexity, а затем знать, что каждый вид сортирует, чтобы отсортировать их элементы. После этого вы можете думать в пограничных случаях, например, о 0 элементах, 10000 элементах (на самом деле не о границе), n элементов и 2 элемента :) – mayo
@mayo Это не 2 элемента. Это 2 клавиши, с элементами 'n'. Я считаю, что другие нисходящие люди тоже не понимали этого вопроса, так как на самом деле это хороший человек. – amit
@mayo Спасибо за ответ на этот вопрос :). – vmxplus