O algoritmo Quick Sort é um algoritmo de classificação de divisão e conquista que funciona particionando recursivamente a matriz de entrada em submatrizes cada vez menores até que cada submatriz contenha apenas um elemento. O algoritmo é rápido, eficiente e amplamente utilizado na ciência da computação.
Como funciona a classificação rápida: 1.
Dividir: Escolha um elemento pivô da matriz (geralmente o último elemento).
2.
Partição: Reorganize a matriz de modo que todos os elementos menores que o pivô fiquem à esquerda do pivô e todos os elementos maiores que o pivô fiquem à direita. O elemento pivô está em sua posição final classificada.
3.
Recurso: Repita as duas etapas acima para as submatrizes esquerda e direita, dividindo-as recursivamente até que cada submatriz contenha apenas um elemento.
Exemplo 1:
Considere a matriz [5, 3, 8, 2, 1, 4].
um. Dividir:Escolha o último elemento, 1 como pivô.
b. Partição:
- Reorganize o array:[3, 2, 1, 5, 4, 8] (1 está em sua posição classificada).
c. Recurso:
- Subarray esquerdo:[3, 2, 1] (já classificado)
- Subarray direito:[5, 4, 8] (aplicar recursivamente Quick Sort)
Depois de aplicar a classificação rápida a ambos os subarrays, o array classificado final é:[1, 2, 3, 4, 5, 8].
Exemplo 2:
Classificando uma matriz maior
Considere uma matriz [7, 2, 9, 5, 3, 4, 1, 8, 6].
um. Dividir:Escolha o último elemento, 6, como pivô.
b. Partição:
- Reorganize a matriz:[2, 5, 3, 4, 1, 7, 9, 6] (6 está em sua posição classificada).
c. Recurso:
- Submatriz esquerda:[2, 5, 3, 4, 1] (aplicar classificação rápida recursivamente)
- Subarray direito:[7, 9] (já classificado)
Após completar as chamadas recursivas, o array ordenado é:[1, 2, 3, 4, 5, 6, 7, 8, 9].
Complexidade de tempo: - Melhor caso:O (n log n)
- Caso médio:O (n log n)
- Pior caso:O(n^2) (ocorre quando a matriz já está classificada ou classificada inversamente)
No geral, o algoritmo Quick Sort oferece uma solução de classificação eficiente com uma boa complexidade de tempo médio de O(n log n). Sua simplicidade e versatilidade o tornaram um algoritmo popular para classificação de tarefas em diversas linguagens de programação.