Assista ao vídeo para entender o funcionamento do projeto.
Observação: No momento do vídeo onde se fala sobre as implementações em rust, foi omitida uma etapa importante que está descrita no tópico 2.4 do nosso trabalho. Basicamente, em rust tem duas formas de rodar. No "cargo run" ele testa a performance e gera as listas com diversas entradas. Já o "cargo test" ele vê com as funções de test se estão funcionando própriamente.
Para compilar o documento, use o Makefile na pasta latex.
- Compila o arquivo
main.pdfemlatex/output.
make
- Limpa os arquivos de compilação
make clean
Os arquivos de código que contem as implementações requeridas estão na pasta src/, em Rust estão sendo implementados os algoritmos de ordenação e em C++ foram implementados os idadeRep, idadeRep2, bBinRec e binSearch.
Pra rodar basta executar dentro da pasta src/rust:
cargo run
E aí ele vai criar o arquivo src/rust/src/out/entries.txt e src/rust/src/out/output.txt, com as listas que ele usou e o resultado de performance respectivamente.
Estando em src/cpp, compile e execute <algoritmo>/main.cpp.
Por exemplo:
clang++ -O3 binSearch/main.cpp
Um arquivo chamado output.txt vai ser criado na pasta atual.
Observação: A flag "-03" é colocada para compilar em maximum performance. Se ela estiver ocasionando erros na sua máquina é possivel compilar sem a flag.
- 1.0 Deve ser feita a descrição das funções/procedimentos utilizados e uma explicação do funcionamento geral para o algoritmo (pseudocódigo), buscando justificar o resultado esperado em todos os casos possíveis (explicar porque o seu algoritmo funciona). (Marina)
- 1.1 Estabeleça pseudocódigos para o algoritmo de ordenação BubbleSort em versões iterativa e recursiva e analise a complexidade em relação as notações Big O, ômega e Theta. Para a versão recursiva, utilize os 4 métodos vistos. (Marina)
- 1.2 Estabeleça pseudocódigos para o algoritmo de ordenação MergeSort em versões iterativa e recursiva e analise a complexidade em relação as notações Big O, ômega e Theta. Para a versão recursiva, utilize os 4 métodos vistos. (Vinicius e Gabriel)
- 1.3 Estabeleça pseudocódigos para o algoritmo de ordenação QuickSort em versões iterativa e recursiva e analise a complexidade em relação as notações Big O, ômega e Theta. Para a versão recursiva, utilize os 4 métodos vistos. (Marina)
- 2.0 Descreva o ambiente computacional utilizado (Software e Hardware).(Vinicius)
- 2.1 Função iterativa
- 2.1.A Implemente os códigos idadeRep e idadeRep2, vistos em sala de aula. (Gabriel)
- 2.1.B Crie instâncias aleatórias com idades (inteiros) variando entre 0 e 100, com tamanhos n=100, n=1.000, n=10.000. (Gabriel)
- 2.1.C Compute os tempos de processamento e compare com os resultados da análise assintótica vista em sala. (Gabriel)
- 2.2 Função recursiva
- 2.2.A Implemente os códigos buscaBinaria e bBinRec, vistos em sala de aula. (Bianca)
- 2.2.B Crie instâncias aleatórias com idades (inteiros) variando entre 0 e 100, com tamanhos n=100, n=1.000, n=10.000 (Bianca)
- 2.2.C Compute os tempos de processamento e compare com os resultados da análise assintótica vista em sala. (Bianca)
- 2.3 Implemente os algoritmos de ordenação baseados nos pseudocódigos que você sugeriu nos itens 1.A, 1.B e 1.C, em suas versões iterativa e recursiva. (Vinicius)
- 2.4 Crie listas aleatórias, com inteiros variando entre 0 e 1000, de tamanho 1.000, 10.000 e 100.000(salve as listas em arquivo txt). (Vinicius)
- 2.5 Execute os algoritmos de ordenação (BubbleSort, MergeSort e QuickSort, iterativo e recursivo) nas listas, salve o resultado da lista ordenada em um arquivo txt, e compute o tempo de processamento para cada caso. Faça o tabelamento dos resultados, e realize uma análise detalhada. Esta análise deve constar no arquivo PDF enviado. (Vinicius)
Na verdade verdadeira, todo mundo se intrometeu em tudo! Mas por fins de prestar conta, essa é nossa lista.
© IMD/UFRN 2024