Escolar Documentos
Profissional Documentos
Cultura Documentos
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.