Escolar Documentos
Profissional Documentos
Cultura Documentos
LABORATRIO 1
Complexidade de Algoritmos
EXERCCIOS DE REVISO
ALGORITMO
se A[i] > A[i+1] ento
| temp = A[i]
| A[i] = A[i+1]
| A[i+1] = temp
ALGORITMO
para i = 0 at comprimento(A) - 1 faa
| se A[i] > A[i+1] ento
| | temp = A[i]
| | A[i] = A[i+1]
| | A[i+1] = temp
BUBBLE-SORT(A)
faa
| troca = falso
| para i = 0 at comprimento(A) - 1 faa
| | se A[i] > A[i+1] ento
| | | trocar(A[i], A[i+1])
| | | troca = verdadeiro
enquanto troca
EXERCCIOS DE PROGRAMAO
1. Implemente o algoritmo de ordenao por insero (Insertion Sort). O algoritmo deve ser
implementado em uma funo que recebe um vetor de inteiros como argumento.
INSERTION-SORT(A)
para j = 1 at comprimento(A) faa
| chave = A[j]
| i = j-1
| enquanto i >= 0 e A[i] > chave faa
| | A[i+1] = A[i]
| | i = i 1
| A[i+1] = chave
2. Implemente o algoritmo de ordenao por flutuao (Bubble Sort). Para isso implemente
tambm a funo trocar, que deve receber dois valores inteiros e trocar os valores das
variveis na funo chamadora.
BUBBLE-SORT(A)
faa
| troca = falso
| para i = 0 at comprimento(A) - 1 faa
| | se A[i] > A[i+1] ento
| | | trocar(A[i], A[i+1])
| | | troca = verdadeiro
enquanto troca
3. O C++ possui uma biblioteca chamada chrono que permite calcular o tempo de execuo
de uma tarefa utilizando um contador de alta preciso da CPU. O Exemplo abaixo mostra
como usar este contador para obter o tempo de execuo de um trecho de cdigo.
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
int main()
{
auto t0 = high_resolution_clock::now();
auto t1 = high_resolution_clock::now();
system("pause");
return 0;
}