按对角线进行矩阵排序

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;

}

};

相关推荐
xushichao198917 分钟前
代码生成优化技术
开发语言·c++·算法
炽烈小老头24 分钟前
【每天学习一点算法 2026/03/22】前 K 个高频元素
学习·算法
leaves falling26 分钟前
C++类和对象(1)
开发语言·c++
2401_8732046531 分钟前
模板编译期循环展开
开发语言·c++·算法
木心月转码ing31 分钟前
Hot100-Day51-TT70爬楼梯
算法
NAGNIP31 分钟前
一文搞懂经典的优化算法都有哪些?
算法
CoovallyAIHub34 分钟前
2.5GB 塞进浏览器:Mistral 开源实时语音识别,延迟不到半秒
深度学习·算法·计算机视觉
会编程的土豆40 分钟前
C++中的 lower_bound 和 upper_bound:一篇讲清楚
java·数据结构·算法
NAGNIP40 分钟前
一文搞懂深度学习中的损失函数设计!
人工智能·算法
阿里嘎多哈基米42 分钟前
速通Hot100-Day09——二叉树
算法·leetcode·二叉树·hot100