對于大數據集,使用random_shuffle
函數可能會導致性能問題,因為它需要對整個數據集進行隨機重排。在大數據集情況下,可以考慮使用更高效的方法來實現隨機重排,例如使用Fisher-Yates算法或洗牌算法。
以下是一個使用Fisher-Yates算法實現隨機重排的示例代碼:
#include <iostream>
#include <algorithm>
#include <vector>
void fisherYatesShuffle(std::vector<int>& data) {
int n = data.size();
for (int i = n - 1; i > 0; i--) {
int j = rand() % (i + 1);
std::swap(data[i], data[j]);
}
}
int main() {
std::vector<int> data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// 使用Fisher-Yates算法進行隨機重排
fisherYatesShuffle(data);
for (int num : data) {
std::cout << num << " ";
}
return 0;
}
在上面的示例中,我們使用Fisher-Yates算法實現了隨機重排,并避免了random_shuffle
函數可能帶來的性能問題。您可以根據實際情況選擇適合的方法來實現隨機重排。