لماذا معالجة المصفوفة المرتبة أسرع من غير المرتبة؟
مرحباً بالجميع! أنا مطور C++ مبتدئ وواجهت مشكلة غريبة جداً عند تحسين الكود. لدي حلقة بسيطة تجمع عناصر المصفوفة، ولكن فقط تلك التي تكون أكبر من حد معين. لاحظت أنه إذا كانت المصفوفة مرتبة، فإن الكود يعمل أسرع بعدة مرات مما لو كانت غير مرتبة. إليك مثال على الكود:
```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 sorted_data = data;
std::sort(sorted_data.begin(), sorted_data.end());
long long sum_sorted = 0;
long long sum_unsorted = 0;
// نقيس الوقت للمصفوفة المرتبة
auto start = std::chrono::high_resolution_clock::now();
for (int i =