Por qué el procesamiento de un array ordenado es más rápido que el de uno desordenado
Hola a todos. Estoy aprendiendo C++ y me encontré con un comportamiento extraño de rendimiento. Escribí un programa simple que suma los elementos de un array, pero solo si son mayores que un cierto umbral (por ejemplo, 128). Medí el tiempo de ejecución para un array ordenado y uno desordenado, y los resultados me sorprendieron.
Aquí está el código:
```cpp
#include
#include
#include
#include
int main() {
const int SIZE = 100000;
std::vector data(SIZE);
// Llenamos con números aleatorios
for (int i = 0; i < SIZE; ++i) {
data[i] = rand() % 256;
}
// Copia para el caso desordenado
std::vector unsorted = data;
std::vector sorted = data;
std::sort(sorted.begin(), sorted.end());
long long sum = 0;
auto start = std::chrono::high_resolution_clock::now();
for (int i = 0; i < SIZE; ++i) {
if (sorted[i] >= 128) {
sum += sorted[i];
}
No answers yet.
Inicia sesión para dejar una respuesta