在一维数组中对二维进行排序
Sorting on two dimensions in a one dimensional array
假设我有一个这样的一维列表
A8, C3, C7, F9, A3, V3, J2
如果我想按第一个字符的字母顺序和第二个字符的数字顺序对此列表进行排序,我该怎么做?
我假设我必须优先考虑某种排序,并取消次要排序的优先级,例如:
A1, B2, C1
A1肯定会是第一个,但问题是,它应该是:
{A1, C1, B2}
,还是{A1, B2, C1}
?
我的最后一个问题是,如果我想优先考虑数字排序,我想我会将其作为第二排序,而不是大多数语言中标准排序算法的第一个排序?
我最关心的是与C++这样的实现进行排序
struct CustomSort{
bool operator()(tuple<int,regex> const &lhs, tuple<int,regex> const &rhs){
return std::get<0>(lhs) > std::get<0>(rhs);
}
};
假设你的数组(arr
)是std::string
的容器,并且你想要优先考虑数值排序(即 C1 < A3
),您可以使用对 std::sort
的单个调用来做到这一点(我在这里使用的是 c++11 lambda,但如果需要,您可以使用自定义Comparator
):
std::sort(begin(arr), end(arr), [](std::string const& lhs, std::string const& rhs) {
return std::tie(lhs[1], lhs[0]) < std::tie(rhs[1], rhs[0]);
});
我不会将第二个char
转换为int
,因为标准保证'0' < '1' < ... < '9'
,但这假设您只有 0
到 9
之间的数字。
如果要优先排序第一个字符,则只需执行标准std::sort
:
std::sort(begin(arr), end(arr));
相关文章:
- 为什么指针在对二维数组进行排序时无法正常工作?
- 使用 std::sort 对二维 c 数组进行排序
- 如何对二维矢量进行排序
- 根据类中另一个对象 C++ 的值对类中的二维对象进行排序并赋予值
- 排序后如何将二维数组重置为原始形式
- 在一维数组中对二维进行排序
- 对角度二维数组进行排序
- 这是用于对二维数组进行排序的最佳方法
- 按一列对二维数组进行气泡排序
- 排序二维结构阵列
- 根据用户输入对二维数组进行排序和打印
- C++:二维指针数组排序:选择排序不适用于某些实例
- 基于另一个二维向量对二维向量进行排序
- 对 C++ 中的二维数组进行排序
- 二维数组中的插入排序
- 在C++中对二维数组使用插入排序函数
- 排序函数不适用于c++中的二维向量
- 如何在c++中对二维数组进行排序
- 如何在c/c中基于特定索引对二维数组进行排序
- 对二维矢量进行排序,保持对原始索引的跟踪