C++程序 在二维数组中按行排序
给定一个二维数组,将其中每一行进行排序并打印结果。
示例:
输入:
77 11 22 3
11 89 1 12
32 11 56 7
11 22 44 33
输出:
3 11 22 77
1 11 12 89
7 11 32 56
11 22 33 44
输入:
8 6 4 5
3 5 2 1
9 7 4 2
7 8 9 5
输出:
4 5 6 8
1 2 3 5
2 4 7 9
5 7 8 9
方法1 (使用冒泡排序):
开始迭代给定二维数组的每一行,并使用高效的排序算法对每一行的元素进行排序。
// C++ program to sort
// 2D matrix row-wise
#include<bits/stdc++.h>
using namespace std;
void sortRowWise(int m[][4],
int r, int c)
{
// Loop for rows of matrix
for (int i = 0; i < r; i++)
{
// Loop for column of matrix
for (int j = 0; j < c; j++)
{
// Loop for comparison and swapping
for (int k = 0; k < c - j - 1; k++)
{
if (m[i][k] > m[i][k + 1])
{
// Swapping of elements
swap(m[i][k], m[i][k + 1]);
}
}
}
}
// Printing the sorted matrix
for (int i = 0; i < r; i++)
{
for (int j = 0; j < c; j++)
cout << m[i][j] << " ";
cout << endl;
}
}
// Driver code
int main()
{
int m[][4] = {{9, 8, 7, 1},
{7, 3, 0, 2},
{9, 5, 3, 2},
{6, 3, 1, 2}};
int c = sizeof(m[0]) / sizeof(m[0][0]);
int r = sizeof(m) / sizeof(m[0]);
sortRowWise(m, r, c);
return 0;
}
输出
1 7 8 9
0 2 3 7
2 3 5 9
1 2 3 6
时间复杂度: O(rcc)。
辅助空间: O(1)
方法2 (使用库函数):
思路是对矩阵的每一行使用Arrays.sort()。
// C++ program to sort 2D
// matrix row-wise
#include <bits/stdc++.h>
using namespace std;
#define M 4
#define N 4
int sortRowWise(int m[M][N])
{
// One by one sort
// individual rows.
for (int i = 0; i < M; i++)
sort(m[i], m[i] + N);
// Printing the sorted matrix
for (int i =0; i < M; i++)
{
for (int j = 0; j < N; j++)
cout << (m[i][j]) << " ";
cout << endl;
}
}
// Driver code
int main()
{
int m[M][N] = {{9, 8, 7, 1},
{7, 3, 0, 2},
{9, 5, 3, 2},
{6, 3, 1, 2}};
sortRowWise(m);
}
输出:
1 7 8 9
0 2 3 7
2 3 5 9
1 2 3 6
时间复杂度: O(N*M)。
辅助空间: O(1)