小编S..*_*S..的帖子

C++ 对于大型数据集(数百万行)最好的排序容器和方法是什么

我正在处理一个练习,该练习应该准确地对此类代码的时间复杂度进行基准测试。

我正在处理的数据由像这样的字符串对组成hbFvMF,PZLmRb,每个字符串在数据集中出现两次,一次在位置1,一次在位置2。所以第一个字符串将指向zvEcqe,hbFvMF例如并且列表还在继续......

50k 对的示例数据集

我已经能够生成代码,对最多 50k 对的数据集进行排序没有太大问题,大约需要 4-5 分钟。10k 只需几秒钟即可完成排序。

问题是我的代码应该处理最多 500 万对的数据集。所以我想看看我还能做些什么。我将发布我的两个最佳尝试,第一个是向量,我认为我可以通过替换来升级,vector因为unsorted_map搜索时的时间复杂度更好,但令我惊讶的是,当我测试它时,两个容器之间几乎没有区别。我不确定我解决问题的方法或我选择的容器是否导致了排序时间过长......

尝试使用向量:

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <map>
#include <unordered_map>
#include <stdio.h>
#include <vector>
#include <iterator>
#include <utility>
#include <functional>
#include <algorithm>

using namespace std;


template<typename T>
void search_bricks_backwards(string resume, vector<T>& vec, vector<string>& vec2) {
    int index = 0;
    int temp_index = 0;
    while (true) {
        if (index == vec.size()) {
            vec2.insert(vec2.begin(), …
Run Code Online (Sandbox Code Playgroud)

c++ sorting algorithm containers dataset

5
推荐指数
1
解决办法
446
查看次数

标签 统计

algorithm ×1

c++ ×1

containers ×1

dataset ×1

sorting ×1