Временная сложность сортировки выбором

start = 0
while (start!= len(array)-1):
    for i in range(start +1,len(array)):
            if (array[i]<array[start]):
                    array[i],array[start] = array[start],array[i]
                    print(array)
    start += 1

в этом случае не должна быть сложность O (n) = n * [(n-1) + (n-2) + .... (n-(n-1))], как для каждого из n раз внешний цикл, внутренний цикл выполняется для diff шагов, постепенно уменьшающихся на единицу. Таким образом, O(n) становится равным (n^3 - n^2)/2. Что не так с моим подходом?enter code here


person arunava001    schedule 03.06.2019    source источник
comment
Возможный дубликат Временная сложность в лучшем случае для сортировки выбором   -  person 17slim    schedule 03.06.2019


Ответы (1)


Посмотрите на это таким образом. В первый раз (начало = 0) внутренний цикл выполняет n-1 шагов, во второй раз (начало = 1) внутренний цикл выполняет n-2 шагов и так далее. Таким образом, у вас есть:

(n-1) + (n-2) + ... + 1 шаг, что равно (n^2-n)/2 шага.

person PF. Castro    schedule 04.06.2019