Avatar ·

Por que processar um array ordenado é mais rápido do que um não ordenado?

Olá a todos! Sou um desenvolvedor C++ iniciante e me deparei com um problema muito estranho ao otimizar código. Tenho um loop simples que soma os elementos de um array, mas apenas aqueles que são maiores que um determinado limite. Notei que, se o array estiver ordenado, o código executa várias vezes mais rápido do que se não estiver ordenado. Aqui está um exemplo de código: ```cpp #include #include #include #include int main() { const int SIZE = 100000; std::vector data(SIZE); // Preenchemos o array com números aleatórios for (int i = 0; i < SIZE; ++i) { data[i] = rand() % 256; } // Ordenamos o array para o primeiro teste std::vector sorted_data = data; std::sort(sorted_data.begin(), sorted_data.end()); long long sum_sorted = 0; long long sum_unsorted = 0; // Medimos o tempo para o array ordenado auto start = std::chrono::high_resolution_clock::now(); for (int i =