Please enable JavaScript.
Coggle requires JavaScript to display documents.
Quicksort - Coggle Diagram
Quicksort
Como esse é um dos algoritmos de ordenação mais importantes da computação, surgiram varias melhorias para ele, dentre elas temos:
- Melhores métodos para a seleção do pivô
- Usar o Insertion sort em casos de subarrays muito pequenos
- Fazer algumas modificações para o método Patition trabalhar menor em subarrays pequenos
Assim como o Mergesort, o Quicksort também faz parte da abordagem de dividir pra conquistar, porem o f(n) (tempo para a separação em subproblemas + tempo para juntar as soluções) é diferente, pois ele não perde tempo levando os dados para outro array com um tamanho ideal, ele faz todas as operações dentro do array a ser ordenado
-
Algoritmo
Entrada:
-
- Verifique se l < r (caso l < r continue)
Uma checagem para garantir que a posição do começo vem antes do final, mas também uma condição de parada para a recurção
- s (variável int) recebe Partition(A[l..r])
O Partition(A[l..r]) vai fazer grande parte do(se não todo o) trabalho, ele vai organizar o (sub)array de forma que o elemento que inicialmente estava em A[l] fique numa posição em que todos a sua direita são maiores que ele e todos a sua esquerda são menores
-
- Aplique Quicksort(A[n], l, s - 1) e Quicksort(A[n], s + 1, r)
-
-
Partition
Algoritmo
- Vai ter a mesma entrada (parâmetros) do Quicksort
- Atribua A[l] a p(variável do tipo dos elementos de A)
- i recebe l e j recebe r+1
-
-
- Troque as posições de A[i] e A[j]
Até i >= j
- Troque as posições de A[i] e A[j] (desfazendo a ultima troca, quando i >= j)
- Troque as posições de A[l] e A[j]
- 1 more item...