Você está na página 1de 5

Bubble Sort

Complexidade:
Melhor caso: О(n2)
Caso médio: О(n2)
Pior caso: О(n)

Como funciona:
1. Compara um elemento com o seu sucessor, se o sucessor for menor eles
trocam de posição entre si.
2. Vai para o próximo elemento e faz o passo 1 novamente.
3. Após varrer todo o array, ele não fará esse processo com o último elemento do
array já que já foi trocado de posição com o penúltimo.

Vantagens:
-Facil de implementar
-Estável
-Baixo uso de memória.

Desvantagens:
-Alta complexidade
-Outros algoritmos de mesma complexidade rodam melhor que o Bubble Sort.

Selection Sort
Complexidade:
Melhor caso: О(n2)
Caso médio: О(n2)
Pior caso: О(n2)

Como funciona:
- O array é considerado em duas partes: Ordenado e desordenado. (Começa todo
desordenado)
1. Varre a parte desordenada do array e pega o menor elemento.
2. Traz o menor elemento da parte desordenada para a próxima posição da parte
ordenada.
Vantagens:
-Facil de implementar.
-Baixo uso de memória.

Desvantagens:
-Instável.
-Alta complexidade.
-Alguns outros algoritmos de mesma complexidade rodam melhor que o Selection Sort.

Insertion Sort
Complexidade:
Melhor caso: О(n)
Caso médio: О(n2)
Pior caso: О(n2)

Como funciona:
- O array é considerado em duas partes: Ordenado e desordenado. (Já começa
com o primeiro elemento ordenado.)
1. Seleciona o primeiro elemento desordenado.
2. Se o primeiro elemento desordenado for maior que todos os ordenados não
muda nenhum de posição, se não, o elemento desordenado troca de posição
com o último elemento ordenado até encontrar um menor que ele.
3. Avança o marcador.

Vantagens:
-Facil de implementar.
-Estável.
-Performance melhor que de outros algoritmos com mesma complexidade.
-Baixo uso de memória.

Desvantagens:
-Alta complexidade.

Merge Sort

Complexidade:
Sempre O(n log(n) ).

Como funciona:
1. Divida o array em 2 (esquerda e direita) até todos os elementos ficarem
separados.
2. Junta os elementos separados, já comparando e ordenando eles.

Vantagens:
-Baixa complexidade.
-Estável.

Desvantagens:
-Difícil de implementar.
-Perde para o quicksort que tem a mesma complexidade.
-Alto uso de memória.

Quick Sort

Complexidade:
Melhor caso: O(n log(n)).
Caso médio: O(n log(n)).
Pior caso: О(n2).

Como funciona:
1. Escolhe um número para ser o pivot.
2. Coloca números menores que o pivot na esquerda e maiores na direita.
3. Varre o array, quando achar um número maior que o pivot ele trocará de posição
com o próximo número menor que o pivot.

Vantagens:
-Baixa complexidade.
-É um dos algoritmos mais rápidos.

Desvantagens:
-Difícil de implementar.
-Instável.
-Alto uso de memória.
Heap Sort

Complexidade:
Melhor caso: O(n log(n)).
Caso médio: O(n log(n)).
Pior caso: О(n2).

Como funciona:
1. Transforma o array em um heap.
2. Ordena esse heap do maior pro menor e troca de posição o primeiro elemento
com o último.
3. Remove o maior número do heap e volta pro passo 2.

Vantagens:
-A melhor performance.
-Baixo uso de memória.

Desvantagens:
-Difícil de implementar.
-Instável.