Published April 2, 2024 | Version v1
Computational notebook Open

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