Quem poderia responder

3 respostas
N

Um amigo disse que ordena um veotr de n posicoes, num alg de complexidade O(n), cada posicao do vetor sao valores 0 ou 1, ele esta mentindo?, porque?

3 Respostas

Andre_Brito

Cada posição do vetor contém um valor que é ou 0 ou 1?
Cara, mesmo assim, eu acho que a complexidade, no pior caso, fica um pouco menos de O(n^2) (percorrer até encontrar o primeiro 1, e depois percorrer a partir do 1 até encontrar um 0 e trocar os valores).

Eu desconheço.

Não sei se você estaria “cheatando”, mas você poderia contar a quantidade de 0s e 1s com complexidade O(n). Depois pegar a lista e preencher com os respectivos valores de 0s e 1s, resultando em O(n) novamente. Mas isso não é um algoritmo de ordenação (eu acho).

Abraço.

N

É verdade, mas como justificar ser possivel criar esse vetor de n posições com valores 0 e 1, de forma teorica?

T

O algoritmo é muito simples e é de ordem O(N) mesmo.
Basta ver que você deve contar a quantidade de valores 0 e 1 que deve ter o vetor ordenado, que é a mesma quantidade de valores 0 e 1 do vetor original. Então basta contar quantos valores 0 e 1 existem no vetor original, o que é uma operação de ordem O(N).

Criado 9 de dezembro de 2008
Ultima resposta 9 de dez. de 2008
Respostas 3
Participantes 3