Avatar ·

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]; }