class Solution {
public:
void bubbleSort1(vector<int>& arr) {
int n = arr.size();
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
void bubbleSort2(vector<int>& arr) {
int n = arr.size();
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
vector<vector<int>> sortMatrix(vector<vector<int>>& grid) {
if(grid.empty() || grid[0].empty()){
return grid;
}
int n=grid.size();//表示行数
int m=grid[0].size();//表示列数
//处理对角线及以下的部分
for(int i=0;i<n;i++){
vector<int>temp;
for(int j=0,k=i;j<grid.size()-i&&k<n;j++,k++){
temp.push_back(grid[k][j]);
}
bubbleSort1(temp);
for(int j=0,k=i,jdx=0;j<grid.size()-i&&k<n;j++,k++,jdx++){
grid[k][j]=temp[jdx];
}
}
//处理对角线以上的部分
for(int j=1;j<m;j++){
vector<int>temp;
for(int i=0,k=j;i<grid.size()-j&&k<m;i++,k++){
temp.push_back(grid[i][k]);
}
bubbleSort2(temp);
for(int i=0,k=j,idx=0;i<grid.size()-j&&k<m;i++,k++,idx++){
grid[i][k]=temp[idx];
}
}
return grid;
}
};