21xrx.com
2024-05-20 14:06:45 Monday
登录
文章检索 我的文章 写文章
如何使用sort对C++二维数组进行排序
2023-07-14 05:45:18 深夜i     --     --
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函数,我们能够轻松地对二维数组进行排序,帮助我们更好地处理大量的数据。

  
  

评论区

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