对矢量的矢量进行排序
Sort vector of vector
本文关键字:排序 更新时间:2023-10-16
我有一个int向量的向量,如下所示:
std::vector<std::vector<int>> vec_vec{{3,5,1,6},{2,4},...};
结果应该是
Case1: {{1, 2, 3, 4}, {5, 6}}
Case2: {1,2,3,4,5,6}
Case3: {{1, 3, 5, 6}, {2, 4}}
我找到了很多方法来做到这一点,我发现最好的方法需要复杂性O(n^2)
来对它们进行排序。
case1
、case2
和case3
的最佳复杂度是多少?
那么,编写本机(c++11,c++14)跨平台代码对向量进行排序的最佳方法是什么呢?O(n^2)
是最好的复杂度吗?记忆力也很重要。
我在这里检查了这个解决方案,但似乎也需要O(n^2)
来对向量进行排序?
最简单的情况是情况2。要解决这个问题,请创建一个临时的新向量,将所有元素移动到那里,并对新向量进行排序。
std::vector<int> temp;
for (const auto& vec: vec_vec)
{
std::copy(vec.begin(), vec.end(), std::back_inserter(temp));
}
std::sort(temp.begin(), temp.end());
复制部分是O(n);排序部分是O(n-log(n))。
要实现案例1,请将元素从temp
复制回vec_vec
——这应该很容易。
相关文章:
- 二叉排序树无法编译
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- C++选择排序算法中的逻辑错误
- 使用C++程序合并排序没有得到正确的输出
- 计算排序向量的向量中唯一值的计数
- 排序算法c++
- 使用2个键的cpp-stl::优先级队列排序不正确
- 将结构向量排序为子组
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 如何对点云数据进行排序
- 对字符串进行排序时,在c++中处理sort()
- 是否有类似std::lower_bound的函数,而不需要排序/分区输入
- 下面是排序算法O(n)吗
- std::sort()函数无法对向量的一部分进行排序
- shell排序中的交换和比较
- clang格式:禁用排序包含
- 显示错误输出的简单数组排序程序
- 为什么我的排序算法会更改数组值
- 试图在c++中对数字列表进行排序
- 如何在C++中对数组进行冒泡排序