c++ - 在C++中按一列对2d数组进行排序

标签 c++ arrays algorithm sorting bubble-sort

我有一个非常明确的问题要处理。我需要对数组[4] [x]进行降序排序。
从实例,如果我得到像这样的值:

{121,120,203,240}
{0.5,0.2,3.2,1.4}
{1.3,1.5,1.2,1.8}
{3  ,2  ,5  ,4  }

所有值必须按第4行排序。因此,我需要这样的输出:
{203,240,121,120}
{3.2,1.4,0.5,0.2}
{1.2,1.8,1.3,1.5}
{5  ,4  ,3  ,2  }

我已经尝试通过冒泡排序方法来执行此操作,但是它无法正常工作。

最佳答案

使用冒泡排序对数组进行排序的简单方法如下所示

#include <iostream>
#include <iomanip>
#include <utility>

int main()
{
    const size_t N = 4;

    double a[][N] =
    {
        { 121, 120, 203, 240 },
        { 0.5, 0.2, 3.2, 1.4 },
        { 1.3, 1.5, 1.2, 1.8 },
        { 3, 2, 5, 4 }
    };

    for (const auto &row : a)
    {
        for (double x : row) std::cout << std::setw( 3 ) << x << ' ';
        std::cout << '\n';
    }
    std::cout << std::endl;

    //  The bubble sort
    for (size_t n = N, last = N; not (n < 2); n = last)
    {
        for (size_t i = last = 1; i < n; i++)
        {
            if (a[N - 1][i - 1] < a[N - 1][i])
            {
                for (size_t j = 0; j < N; j++)
                {
                    std::swap(a[j][i - 1], a[j][i]);
                }
                last = i;
            }
        }
    }

    for (const auto &row : a)
    {
        for (double x : row) std::cout << std::setw( 3 ) << x << ' ';
        std::cout << '\n';
    }
    std::cout << std::endl;

    return 0;
}

程序输出为
121 120 203 240
0.5 0.2 3.2 1.4
1.3 1.5 1.2 1.8
  3   2   5   4

203 240 121 120
3.2 1.4 0.5 0.2
1.2 1.8 1.3 1.5
  5   4   3   2

您所需要做的就是从main中提取冒泡排序的代码,并将其重写为任何2D数组和用作排序标准的任何行的单独函数。

关于c++ - 在C++中按一列对2d数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47890711/

相关文章:

可以在 TFS 2010 构建中运行的 C++ 静态代码分析?

c++ - 在 C++ 中读取 RAW 图像或 RAW 图像有标题吗?

JavaScript 卡牌游戏

algorithm - 排序单循环链表

c++ - 运行时程序的机器指令存储在哪里?

c++ - 如何阅读此运算符声明和实现?

ios - 从 Parse.com 检索数组

java - 如何在android中将HashMap转换为json数组?

algorithm - 计算国际象棋 Material 组合数量的简单方法

algorithm - 随着时间的推移展开/平滑周期性任务