按对角线进行矩阵排序

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;

}

};

相关推荐
憨波个6 分钟前
【说话人日志】DOVER-Lap:overlap-aware diarization 输出融合算法
人工智能·深度学习·算法·音频·语音识别
叼烟扛炮13 分钟前
C++第四讲:类和对象(下)
c++·算法·类和对象
Rabitebla13 分钟前
vector 的骨架:三根指针、模板陷阱与迭代器失效的第一现场
开发语言·数据结构·c++·算法
代码不停31 分钟前
BFS解决floodfill算法题目练习
算法·宽度优先
上弦月-编程37 分钟前
C语言指针从入门到实战
java·jvm·算法
WL_Aurora38 分钟前
Python 算法基础篇之树和二叉树
python·算法
txzrxz39 分钟前
关于前缀和
算法·动态规划·图论
杨连江41 分钟前
载流子矩阵限域束缚实现常温常压超导的理论与结构设计
算法
做cv的小昊1 小时前
【TJU】研究生应用统计学课程笔记(6)——第二章 参数估计(2.4 区间估计)
人工智能·笔记·线性代数·算法·机器学习·数学建模·概率论
普贤莲花1 小时前
【2026年第18周---写于20260501】---舍得
程序人生·算法·leetcode