21xrx.com
2024-12-22 20:36:35 Sunday
登录
文章检索 我的文章 写文章
C++二维数组排序
2023-07-11 12:08:25 深夜i     --     --
C++ 二维数组 排序

C++是一种强大的编程语言,它具有丰富的数据类型和结构。其中二维数组是一种广泛应用的数据结构。在实际应用中,经常需要对二维数组进行排序,以方便后续的数据处理。

二维数组排序的思路比较简单,可以分为两个步骤。首先按照行优先或列优先的顺序将二维数组展开为一维数组,然后利用标准库提供的排序算法对一维数组进行排序。最后再将排序后的一维数组重新组装成二维数组即可。

以下为一段C++示例代码,演示了如何使用上述思路对二维数组进行排序。


#include <iostream>

#include <algorithm>

using namespace std;

const int N = 5, M = 3;

int a[N][M] = {3, 2, 9, 0, 6};

void sort_row_first()

{

  int b[N * M];

  for (int i = 0; i < N; i++)

    for (int j = 0; j < M; j++)

      b[i * M + j] = a[i][j];

  sort(b, b + N * M);

  for (int i = 0; i < N; i++)

    for (int j = 0; j < M; j++)

      a[i][j] = b[i * M + j];

}

void sort_col_first()

{

  int b[N * M];

  for (int j = 0; j < M; j++)

    for (int i = 0; i < N; i++)

      b[j * N + i] = a[i][j];

  sort(b, b + N * M);

  for (int j = 0; j < M; j++)

    for (int i = 0; i < N; i++)

      a[i][j] = b[j * N + i];

}

int main()

{

  sort_row_first();

  for (int i = 0; i < N; i++)

  {

    for (int j = 0; j < M; j++)

      cout << a[i][j] << ' ';

    cout << endl;

  }

  cout << endl;

  sort_col_first();

  for (int i = 0; i < N; i++)

  {

    for (int j = 0; j < M; j++)

      cout << a[i][j] << ' ';

    cout << endl;

  }

  return 0;

}

以上代码定义了一个5x3的二维数组a,分别用sort_row_first()和sort_col_first()函数进行了排序。sort_row_first()函数按照行优先的顺序展开二维数组,sort_col_first()函数按照列优先的顺序展开二维数组。在展开后,使用标准库提供的sort()算法进行排序,最后再将排序后的一维数组重新组装成二维数组。在C++语言中,二维数组作为指针进行传递,可以直接修改原数组的值。

总结来说,C++中实现二维数组排序非常简单,只需要将二维数组展开为一维数组,使用标准库提供的排序算法进行排序,再将排序后的一维数组重新组装成二维数组即可。在实际应用中,需要根据具体的需求选择行优先或列优先的排序方式。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复