Avatar ·

Pourquoi le traitement d'un tableau trié est-il plus rapide que celui d'un tableau non trié ?

Bonjour à tous. J'apprends le C++ et je suis tombé sur un comportement de performance étrange. J'ai écrit un programme simple qui additionne les éléments d'un tableau, mais seulement s'ils dépassent un certain seuil (par exemple, 128). J'ai mesuré le temps d'exécution pour un tableau trié et non trié — et les résultats m'ont choqué. Voici le code : ```cpp #include #include #include #include int main() { const int SIZE = 100000; std::vector data(SIZE); // Remplir avec des nombres aléatoires for (int i = 0; i < SIZE; ++i) { data[i] = rand() % 256; } // Copie pour le cas non trié 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]; } }