Comece agoraComece grátis

Comparando o desempenho de algoritmos de busca

Como desenvolvedor(a) de software em uma empresa de e-commerce, você está avaliando diferentes métodos de busca para melhorar a pesquisa de produtos. Até agora, o mecanismo de busca usado pela empresa era muito lento, mas você já conseguiu remover esse atraso. Sua tarefa agora é comparar seu novo método de busca com o antigo, para provar que ele é mais eficiente para a funcionalidade de busca do catálogo.

Este exercicio faz parte do curso

Otimização de Código em Java

Ver curso

Instruções do exercicio

  • Encontre o elemento de destino usando o novo método de busca, linearSearch().
  • Depois, encontre o elemento de destino usando o método de busca antigo, linearSearchWithDelay().
  • Calcule a diferença de desempenho relativo entre os métodos de busca.

exercicio interativo prático

Tente este exercicio completando este código de exemplo.

public class SearchPerformanceTest {
    public static void main(String[] args) {
        int[] array = new int[10000];
        for (int i = 0; i < array.length; i++) {
            array[i] = i;
        }
        
        int target = array[7500]; // Target value to search for

        long startRegular = System.nanoTime();
        // Do a search using the new search method
        boolean foundRegular = ____(array, target);
        long endRegular = System.nanoTime();

        long startDelay = System.nanoTime();
        // Do a search using the old search method
        boolean foundDelay = ____(array, target);
        long endDelay = System.nanoTime();
        
        // Calculate the ratio between the old and new methods
        double ratio = (double)(endDelay - startDelay) / (____ - ____);
        
        System.out.println("Linear search with delay is " + ratio + 
                           " times slower than regular linear search");
    }
    
    private static boolean linearSearch(int[] data, int target) {
        for (int i = 0; i < data.length; i++) {
            if (data[i] == target) return true;
        }
        return false;
    }
    
    private static boolean linearSearchWithDelay(int[] data, int target) {
        for (int i = 0; i < data.length; i++) {
            try {
                Thread.sleep(0, 1000); // 1000 nanoseconds delay
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if (data[i] == target) return true;
        }
        return false;
    }
}
Editar e Executar Código