1. Qual é o menor valor inteiro de n tal que um algoritmo cujo tempo de execução é 100n2 funciona mais rápido que um algoritmo cujo tempo de execução é 2n na mesma máquina? Implemente um algoritmo que imprima na tela a resposta correta.
#include
#include
int main(){
int n;
for(n = 1; n < 20; n++){
if( (100 * n * n) < pow(2, n) ){
printf("%s %d\n", "100*n^2 funciona mais rapido apartir de: ", n);
break;
}
}
return 0;
}
2. Supondo que estamos comparando implementações de ordenação por inserção e por intercalação na mesma máquina. Para entradas de tamanho n, a ordenação por inserção é executada em \(8n^2\) etapas, enquanto a ordenação por intercalação é executada em \(64n log_2 n\) etapas. A partir de qual valor inteiro de n a ordenação por intercalação supera a ordenação por inserção. Implemente um algoritmo que imprima a resposta correta na tela.
#include
#include
int main(){
int n = 1;
float a = 0, b = 1;
while(n<50){ a = 8 * n * n; b = 64 * n * log2(n); printf("%f %f \n", a, b ); if(a>b&&n>1){
printf("O algoritmo de itercalação vale a pena a partir de n = %d", n);
break;
}
n++;
}
return 0;
}