Avatar ·

为什么处理已排序数组比未排序数组更快?

大家好!我是一名初学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 =