21xrx.com
2025-04-03 15:35:25 Thursday
文章检索 我的文章 写文章
如何使用sort对C++二维数组进行排序
2023-07-14 05:45:18 深夜i     22     0
sort C++ 二维数组 排序

在C++中,二维数组常常应用于存储矩阵或数据表格等数据结构,而对于这样的二维数组,我们常常需要对其进行排序。C++标准库提供了sort函数,可用于对二维数组进行排序。本文将介绍如何使用sort对C++二维数组进行排序。

首先,我们需要明确sort函数的使用方式。sort函数的原型为:

template<class RandomIt>
void sort(RandomIt first, RandomIt last);

该函数使用 STL 中的 Random Access Iterator 迭代器,可用于对很多数据结构进行排序,包括数组。我们只需要将二维数组视为一维数组来使用sort函数即可。

下面是一个简单的示例,展示了如何使用sort对二维数组进行升序排序:

#include <iostream>
#include <algorithm>
using namespace std;
int main(){
  int arr[3][3] = {2, 4, 9};
  int n = 3;
  for(int i=0; i<n; i++)
    sort(arr[i], arr[i]+n);
  for(int i=0; i<n; i++){
    for(int j=0; j<n; j++)
      cout << arr[i][j] << " ";
    cout << endl;
  }
  return 0;
}

在这个例子中,我们使用了一个 $3\times3$ 的二维数组,其中第一维表示行,第二维表示列。我们可以看到,在对二维数组进行排序前,先使用一个循环,分别对每一行进行排序。在这里,我们使用了静态数组,但是同样的方法也可以适用于动态数组,只需要更改参数传递即可。

输出结果为:

1 2 3
4 5 6
7 8 9

从结果可以看出,sort函数对每一行进行了升序排序,并且不影响其它行的顺序。

如果需要对二维数组进行降序排序,我们只需要在sort函数中传递一个自定义的比较函数即可。比如,下面的代码展示了如何对二维数组进行降序排序:

bool cmp(int* a, int* b) {
  return *a > *b;
}
int main(){
  int arr[3][3] = { 1, 6, 8};
  int n = 3;
  for(int i=0; i<n; i++)
    sort(arr[i], arr[i]+n, cmp);
  for(int i=0; i<n; i++){
    for(int j=0; j<n; j++)
      cout << arr[i][j] << " ";
    cout << endl;
  }
  return 0;
}

在这个例子中,我们定义了一个自定义的比较函数cmp,用于降序排序。对比上一段代码,我们只需要在sort函数中传递多一个参数即可。运行结果为:

3 2 1
6 5 4
9 8 7

从上面的例子可以看出,使用sort对C++二维数组进行排序是非常简单的。我们只需要把二维数组看作一维数组,并且定义好比较函数即可。通过使用sort函数,我们能够轻松地对二维数组进行排序,帮助我们更好地处理大量的数据。

  
  

评论区