IMPLEMENTAÇÃO DE UM ALGORITMO DE ORDENAÇÃO RÁPIDA EM PYTHON
- 1. 0000-0003-1200-794X
- 2. 0009-0009-6077-3105
Description
INTRODUÇÃO
O algoritmo de ordenação rápida, também conhecido como Quicksort, é um método de ordenação eficiente e amplamente utilizado para ordenar elementos em uma lista. Ele utiliza uma estratégia de divisão e conquista para ordenar os elementos de forma recursiva.
IMPLEMENTAÇÃO
def partition(arr, low, high): #declara uma função chamada partition que aceita três parâmetros: arr (uma lista), low (o índice mais baixo do subarray) e high (o índice mais alto do subarray). Essa função é responsável por particionar a lista arr em torno de um pivô selecionado.
pivot = arr[high] # Escolhe o último elemento como pivô
i = low - 1 # Inicializa o índice do menor elemento
for j in range(low, high): # Itera sobre os elementos do subarray
if arr[j] <= pivot: # Se o elemento atual for menor ou igual ao pivô
i += 1 # Incrementa o índice do menor elemento
arr[i], arr[j] = arr[j], arr[i] # Troca os elementos arr[i] e arr[j]
arr[i + 1], arr[high] = arr[high], arr[i + 1] # Troca arr[i + 1] e arr[high], colocando o pivô na posição correta
return i + 1 # Retorna o índice do pivô após a partição
def quick_sort(arr, low, high): #Esta linha declara uma função chamada quick_sort que aceita três parâmetros: arr (uma lista), low (o índice mais baixo do subarray) e high (o índice mais alto do subarray). Essa função é responsável por ordenar a lista arr usando o algoritmo de ordenação rápida (quicksort).
if low < high: # Verifica se ainda há elementos para ordenar
pi = partition(arr, low, high) # Obtém o índice do pivô após a partição
quick_sort(arr, low, pi - 1) # Ordena o subarray antes do pivô
quick_sort(arr, pi + 1, high) # Ordena o subarray depois do pivô
# Input dos números
arr = input("Digite os números separados por espaço: ").split() # Recebe uma lista de números como string e a divide em uma lista de strings
arr = [int(num) for num in arr] # Converte os elementos da lista para inteiros
n = len(arr) # Obtém o tamanho da lista
quick_sort(arr, 0, n - 1) # Chama a função quick_sort para ordenar a lista
print("Lista ordenada:")
for i in range(n): # Itera sobre a lista ordenada
print("%d" % arr[i]) # Imprime cada elemento da lista ordenada
OBJETIVO
O objetivo deste código em Python é implementar o algoritmo Quicksort para ordenar uma lista de números fornecidos pelo usuário. Ele demonstra como o Quicksort pode ser aplicado para classificar eficientemente uma grande quantidade de dados.
EXPLICAÇÃO DA IMPLEMENTAÇÃO
O código consiste em duas funções principais: partition e quick_sort. A função partition é responsável por selecionar um pivô e particionar a lista em torno desse pivô, enquanto a função quick_sort utiliza a recursão para ordenar os subconjuntos da lista.
A função partition recebe uma lista arr, o índice mais baixo low e o índice mais alto high do subarray. Ela seleciona o último elemento como pivô e rearranja os elementos da lista de forma que os elementos menores que o pivô estejam à esquerda e os maiores à direita.
A função quick_sort recebe os mesmos parâmetros e, utilizando a recursão, ordena os subarrays à esquerda e à direita do pivô.
Após a definição das funções, o código solicita ao usuário uma lista de números separados por espaços, converte essa entrada em uma lista de inteiros e calcula o tamanho da lista.
Em seguida, chama a função quick_sort para ordenar a lista e imprime os elementos ordenados.
A ESCOLHA DO ALGORITMO
O Quicksort é escolhido devido à sua eficiência em média e ao seu desempenho geralmente melhor do que outros algoritmos de ordenação, como o Merge Sort e o Bubble Sort, especialmente para grandes conjuntos de dados.
RESULTADO
O resultado do código é a lista fornecida pelo usuário ordenada em ordem crescente, exibida na saída padrão.
Em resumo, este código em Python demonstra de forma clara e concisa a implementação do algoritmo de ordenação rápida (Quicksort), oferecendo uma solução eficiente para ordenação de listas de números.
REFERÊNCIAS
COELHO, Hebert; FÉLIX, Nádia. Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort).
ALVES, Julia Rezende. Análise de Desempenho dos Algoritmos de Busca Sequencial e de Busca Binária como Ferramentas de um Sistema de Gerenciamento Bancário.
Files
Files
(18.1 kB)
Name | Size | Download all |
---|---|---|
md5:c90e49ef7d565828963aaab677e85ae6
|
18.1 kB | Download |