排序是根据数据值以递增或递减的方式排列数据。本文带来对多个维度的数组进行排序的语法介绍。
对一维数组进行排序
我们可以使用C++中的排序方法对任何维度数组进行排序。
句法:
sort(arr,arr+N)
其中,arr代表数组的名称,arr+N表示数组名+数组大小。
时间复杂度:O(N*log N)
附属空间:O(1)
在多维数组中排序
1.对2维数组进行排序
当对行进行排序时
可以将每一行视为一维数组并单独对它们进行排序
语法:
for(int i=0;i<row;i++){
sort(arr<i>,arr<i>+col)
}
其中,row是行总数,col是col总数
时间复杂度:O(N*M*log M)
附属空间:O(1)
当对整个矩阵进行排序时
语法:
sort(&arr[0][0],&arr[r-1][col])
其中,row是总行数,col是col总数。
时间复杂度:O(N*M log(N*M))仅用于排序,O(N*M)用于输出数组
附属空间:O(1)
注意:这仅适用于二维数组的情况,但对于任何维数组,它的工作方式都是相同的。
2.对3维数组进行排序
举个例子,三个维度是X、Y和Z。
第一种情况,我们希望根据行对其进行排序。伪代码将是:
for(int i=0;i<X;i++)
for(int j=0;j<Y;j++)
sort(arr<i>[j],arr<i>[j]+Z)
时间复杂度:O(X*Y*Z log Z)
附属空间:O(1)
第二种情况,我们要对整个矩阵进行排序。伪代码将是:
sort(&arr[0][0][0],&arr[X-1][Y-1][Z])
时间复杂度:O(X*Y*Z log(X*Y*Z))
附属空间:O(1)