Avatar ·

¿Por qué procesar un array ordenado es más rápido que uno desordenado?

¡Hola a todos! Soy un desarrollador principiante de C++ y me encontré con un problema muy extraño al optimizar código. Tengo un bucle simple que suma los elementos de un array, pero solo aquellos que superan un cierto umbral. Noté que si el array está ordenado, el código se ejecuta varias veces más rápido que si no lo está. Aquí hay un ejemplo de código: ```cpp #include #include #include #include int main() { const int SIZE = 100000; std::vector data(SIZE); // Llenamos el array con números aleatorios for (int i = 0; i < SIZE; ++i) { data[i] = rand() % 256; } // Ordenamos el array para la primera prueba std::vector sorted_data = data; std::sort(sorted_data.begin(), sorted_data.end()); long long sum_sorted = 0; long long sum_unsorted = 0; // Medimos el tiempo para el array ordenado auto start = std::chrono::high_resolution_clock::now(); for (int i =