按对角线进行矩阵排序

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;

}

};

相关推荐
轩情吖25 分钟前
Qt常用控件之QLabel(一)
开发语言·数据库·c++·qt·小程序·qlabel·桌面开发
m0_5522008227 分钟前
《UE5_C++多人TPS完整教程》学习笔记58 ——《P58 旋转奔跑动画(Rotate Running Animations)》
c++·游戏·ue5
Nix Lockhart1 小时前
《算法与数据结构》第六章[第4节]:哈夫曼树
数据结构·算法
多多*2 小时前
linux安装hbase(完)
java·分布式·算法·c#·wpf
青草地溪水旁3 小时前
设计模式(C++)详解—享元模式(1)
c++·设计模式·享元模式
雪域迷影3 小时前
使用C++编写的一款射击五彩敌人的游戏
开发语言·c++·游戏
郝学胜-神的一滴3 小时前
享元模式(Flyweight Pattern)
开发语言·前端·c++·设计模式·软件工程·享元模式
charlie1145141913 小时前
精读《C++20设计模式》——创造型设计模式:构建器系列
c++·设计模式·c++20·构造器模式
java1234_小锋4 小时前
Scikit-learn Python机器学习 - 回归分析算法 - Lasso 回归 (Lasso Regression)
python·算法·机器学习
thginWalker4 小时前
分布式协议与算法实战-实战篇
分布式·算法