Medição de tempo algoritmos de ordenação

131 views
Skip to first unread message

OiOcOzOiO

unread,
Feb 8, 2021, 12:59:49 PM2/8/21
to Python Brasil
Boa tarde, a todos poderiam dar uma mão na questão desse teste por favor.

Faça um experimento com os algoritmos de ordenação, objetivando medir quais são mais rápidos. Após as medições, faça uma breve discussão sobre os resultados obtidos.

Para cada algoritmo, realize a ordenação de 1 milhão de valores inteiros, gerados aleatoriamente e armazenados em uma lista. Meça o tempo 1000 vezes, e a partir da média desses tempos, compare os diferentes algoritmos.

Devem ser utilizados os algoritmos:

  • Bubble Sort
  • Insertion Sort
  • Selection Sort
  • Merge Sort
  • Quick Sort
  • A função sorted() do Python

Nesta atividade, pesquisas podem ser realizadas e os algoritmos de ordenação podem ser utilizados de fontes externas. Nestes casos, SEMPRE referencie de onde o algoritmo foi obtido.

Para a medição de tempo, pode-se utilizar o método .time(), da biblioteca time.

Exemplo

import time
 
ini = time.time() #registra a hora no início
# aqui é executada a operação que terá o tempo medido. Neste exemplo, o método .sleep(2) apenas espera por 2 segundos.
time.sleep(2)
fim = time.time() #registra a hora no final
tempo = fim-ini #calcula a diferença entre a hora final e inicial
 
print(f'A operação demorou {tempo} segundos.')

Fabio C. Barrionuevo da Luz

unread,
Feb 8, 2021, 1:09:16 PM2/8/21
to python...@googlegroups.com

Olhe o modulo timeit da biblioteca padrão: 

https://pymotw.com/3/timeit/index.html#module-timeit

ou se quiser algo mais simples como o print_durations da biblioteca funcy https://funcy.readthedocs.io/en/stable/debug.html#print_durations


# pip install funcy

from funcy import print_durations

@print_durations()
def minha_funcao(n=0):
    for i in range(n):
        pass


if __name__ == "__main__":
        minha_funcao()


--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/32033789-f3c5-4876-a7de-5ae3d6a6bdefo%40googlegroups.com.


--
Fábio C. Barrionuevo da Luz
Palmas - Tocantins - Brasil - América do Sul


Blog colaborativo sobre Python e tecnologias Relacionadas, mantido totalmente no https://github.com/pythonclub/pythonclub.github.io .

Todos são livres para publicar. É só fazer fork, escrever sua postagem e mandar o pull-request. Leia mais sobre como publicar em README.md e contributing.md.
Regra básica de postagem:
"Você" acha interessante? É útil para "você"? Pode ser utilizado com Python ou é útil para quem usa Python? Está esperando o que? Publica logo, que estou louco para ler...

Linux - Junior Polegato

unread,
Feb 8, 2021, 5:40:08 PM2/8/21
to python...@googlegroups.com
Olá!

        Procure no Google por "bubble sort python code", vai encontrar uma função, copia e cola o código no seu script.

        Vai fazendo assim para todos os outros.

        Depois troque a chamada de função "time.sleep(2)" por uma chama a função de ordenação que você copiou e colou.

        Assim terá o tempo de uma delas, aí é só copiar e colar esse código para a quantidade de funções de ordenação que te foi solicitado e trocar a chamada pela função que vai calcular o tempo.


PS: Dá pra fazer tudo em uma linha, mas estou sem tempo no momento.

-- 

[]'s

Junior Polegato

Marcelo Valle

unread,
Feb 9, 2021, 5:08:28 AM2/9/21
to Python Brasil

Marcos Thomaz

unread,
Feb 9, 2021, 8:22:48 AM2/9/21
to python...@googlegroups.com
Ainda teria que levar em consideração como estará seu vetor/lista. Isso porque, em um vetor já previamente ordenado, o InsertionSort por exemplo, pode se sair melhor que o MergeSort e QuickSort



--


Marcos Thomaz da Silva
Analista de Tecnologia da Informação

Adriano Christi

unread,
Feb 9, 2021, 9:16:00 AM2/9/21
to Python Brasil

Dá uma olhada nisso aqui:


Eu creio que ajuda.

Anderson Souza

unread,
Feb 9, 2021, 5:10:21 PM2/9/21
to python...@googlegroups.com
Faça as modificações necessárias. Não estão todos os algoritmos solicitados.
Abra no Google Colab ou Jupyter.


Anderson

Tiago G

unread,
Feb 9, 2021, 5:15:56 PM2/9/21
to python...@googlegroups.com
Vlw a todos, obrigado pelas contribuições. 

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages