21xrx.com
2025-04-03 10:36:07 Thursday
文章检索 我的文章 写文章
C++二维数组排序
2023-07-11 12:08:25 深夜i     11     0
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++中实现二维数组排序非常简单,只需要将二维数组展开为一维数组,使用标准库提供的排序算法进行排序,再将排序后的一维数组重新组装成二维数组即可。在实际应用中,需要根据具体的需求选择行优先或列优先的排序方式。

  
  

评论区

请求出错了