相关疑难解决方法(0)

在c ++中合并8个排序列表,我应该使用哪种算法

我有8个排序列表,我需要合并到1个排序列表中.我不知道这样做的最好方法.我在考虑以下几点:

void merge_lists_inplace(list<int>& l1, const list<int>& l2)
{
    list<int>::iterator end_it = l1.end();
    --end_it;
    copy(l2.begin(), l2.end(), back_inserter(l1));
    ++end_it;
    inplace_merge(l1.begin(), end_it, l1.end());
}

list<int> merge_8_lists(list<int>[8] lists)
{
    merge_lists_inplace(lists[0], lists[1]);
    merge_lists_inplace(lists[2], lists[3]);
    merge_lists_inplace(lists[4], lists[5]);
    merge_lists_inplace(lists[6], lists[7]);

    merge_lists_inplace(lists[0], lists[2]);
    merge_lists_inplace(lists[4], lists[6]);

    merge_lists_inplace(lists[0], lists[4]);

    return lists[0];
}
Run Code Online (Sandbox Code Playgroud)

但是最后担心排序会更好吗?

list<int> merge_8_lists(list<int>[8] lists)
{
    for (int i = 1; i < 8; ++i)
        copy(lists[i].begin(), lists[i].end(), back_inserter(lists[0]));        
    lists[0].sort();
    return lists[0];
}
Run Code Online (Sandbox Code Playgroud)

旁注:我不关心列表是否被修改.

c++ sorting merge stl

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

标签 统计

c++ ×1

merge ×1

sorting ×1

stl ×1