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 =