按对角线进行矩阵排序

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;

}

};

相关推荐
郝学胜-神的一滴5 小时前
Qt 高级开发 009: C++ Lambda 表达式
开发语言·c++·qt·软件构建
石山代码6 小时前
C++ 轻量级日志系统
开发语言·c++
smj2302_796826528 小时前
解决leetcode第3943题递增后的数对数量
数据结构·python·算法·leetcode
炽烈小老头9 小时前
【每天学习一点算法 2026/05/25】矩阵中的最长递增路径
学习·算法·矩阵
王老师青少年编程9 小时前
2026年全国青少年信息素养大赛初赛真题(算法应用主题赛C++初中组初赛真题3:文末附答案和解析)
c++·真题·答案·初赛·2026年·青少年信息素养大赛·初中组
轻颂呀9 小时前
C++11——并发库介绍
开发语言·c++
叁散9 小时前
实验报告:5G 仿真环境与基本链路模拟
算法
从负无穷开始的三次元代码生活10 小时前
算法零碎灵感点分享
算法
梓䈑10 小时前
【算法题攻略】快速排序 和 归并排序
数据结构·c++·排序算法
染指111010 小时前
9.LangChain框架(实现RAG)
数据库·人工智能·算法·机器学习·ai·大模型