Eu tentei esse problema no CLRS (página 39, 2.3-4)
Podemos expressar a classificação por inserção como um procedimento recursivo da seguinte maneira. Para classificar
A[1... n]
, classificamos recursivamenteA[1... n-1]
e depois inserimosA[n]
na matriz classificadaA[1... n-1]
. Escreva uma recorrência para o tempo de execução desta versão recursiva da classificação por inserção.
A recorrência que formei foi
Meu raciocínio
- No caso base de a lista é classificada para que não haja trabalho, portanto, tempo constante.
- Para todos os outros casos, o tempo depende da classificação da sequência
A[1...n-1]
e depois da inserção nessa sequência. Portanto, deve ser sua soma, isto é, .
Eu queria saber se a relação de recorrência está correta. Se não, quais são os erros e como formular corretamente uma relação de recorrência?
algorithm-analysis
runtime-analysis
recurrence-relation
sorting
Aseem Bansal
fonte
fonte
Respostas:
De acordo com a descrição que você forneceu, a recorrência está correta.
você pode pensar que deveria ser
T (n) = porque você pode encontrar o local de inserção usando a Pesquisa binária, no entanto, para inserir o elemento, você precisará afastar todos os elementos no pior caso.
fonte
O(n)
e fazendo pesquisa binária éO(log n)
. Mas não é o pior dos casos o movimento de todos os elementos que devem levarO(n)
, tornando a complexidade geralO(n)
? Então, por que o termo inn != 1
é emO(log n)
vez de serO(n)
?