Avatar ·

لماذا معالجة المصفوفة المرتبة أسرع من غير المرتبة؟

مرحباً بالجميع. أدرس لغة C++ وقد صادفت سلوك أداء غريب. كتبت برنامجاً بسيطاً يجمع عناصر المصفوفة، ولكن فقط إذا كانت أكبر من حد معين (مثلاً 128). قمت بقياس وقت التنفيذ للمصفوفة المرتبة وغير المرتبة — وكانت النتائج صادمة. إليكم الكود: ```cpp #include #include #include #include int main() { const int SIZE = 100000; std::vector data(SIZE); // نملأ بأرقام عشوائية for (int i = 0; i < SIZE; ++i) { data[i] = rand() % 256; } // نسخة للحالة غير المرتبة 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]; } } }