【问题标题】:Sorting numbers digit wise按数字排序数字
【发布时间】:2020-04-28 13:08:49
【问题描述】:

我有 N 个数字,我想按数字对每个数字进行排序。 (在我最初的问题中,我想通过这些(贪婪的方法)获得最大的数字)例如 - 如果我们有 5 个数字 9 1000 845 8000 56 在第一步中,我将选择 9,因为 9 是所有数字的第一位

在第二步中(因为已经选择了 9),下一个最高的第一个数字是 8,但是当 2 个或多个数字具有相同的数字时,我会比较它们的下一个数字,所以我会选择 845。

如果我进行排序,我将得到以下结果 9 845 8000 56 1000。

我的问题是如何在 c++ 中实现这一点?

提前致谢

【问题讨论】:

  • 将数字转换为字符串,然后对字符串进行排序?
  • 在您的排序中,0 4 之后是否正确?因为这需要一个完整的自定义比较,就像数字和字典顺序一样,0 < 4...

标签: c++ sorting c++11 data-structures stl-algorithm


【解决方案1】:

您可以通过将自定义比较函数传递给sort 函数来获得预期结果。

比较函数可能是这样的:

bool compare(int a, int b) {
    ostringstream x, y;
    x << a; y << b;
    return x.str() > y.str();
}


...
    sort(array, array+n, compare);
...

在此比较函数中,我们将integer 数据转换为string 数据并简单地比较字符串值以获得预期的排序数组。

【讨论】:

  • 一个班轮:std::sort(std::begin(array), std::end(array), [](int lhs, int rhs){ return std::to_string(lhs) &gt; std::to_string(rhs); });
猜你喜欢
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
  • 2016-03-07
  • 2017-08-20
  • 2020-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多