Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,907 questions

51,839 answers

573 users

How to sort the boundary elements of a matrix in C++

1 Answer

0 votes
#include <algorithm>
#include <iostream>
#include <vector>
   
void SortMatrixBoundaries(std::vector<std::vector<int>> &matrix) {
    int rows = matrix.size();
    int cols = matrix[0].size();
    
    std::vector<int> vector;
    
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            if (i == 0 || j == 0 || i == rows - 1 || j == cols - 1) {
                vector.push_back(matrix[i][j]);
            }
        }
    }
    
    sort(vector.begin(), vector.end());
    
    int vector_index = 0;

    for (int j = 0; j < cols; j++) {
        matrix[0][j] = vector[vector_index++];
    }
     
    for (int j = 0; j < cols; j++) {
        if (j == cols - 1) {
            for (int i = 1; i < rows; i++) {
                matrix[i][j] = vector[vector_index++];
            }
        }
    }
     
    for (int j = cols - 2; j > -1; j--) {
         matrix[rows - 1][j] = vector[vector_index++];
    }
     
    for (int i = rows - 2; i > 0; i--) {
         matrix[i][0] = vector[vector_index++];
    }
}



void PrintMatrix(std::vector<std::vector<int>> vec2d) {
    for (std::vector<int> vec1d : vec2d) {
        for (int val : vec1d) {
            std::cout << val << " ";
        }    
        std::cout << "\n";
    }
}
   
int main() {
    std::vector<std::vector<int>> matrix {
        { 1,  2,  3,  4,  5},
        { 6,  7,  8,  9, 10},
        {11, 12, 13, 14, 15},
        {16, 17, 18, 19, 20}
    };
    
    SortMatrixBoundaries(matrix);
    
    PrintMatrix(matrix);
}
   
   
   
   
   
/*
run:

1 2 3 4 5 
20 7 8 9 6 
19 12 13 14 10 
18 17 16 15 11 
      
*/

 

 



answered Jun 28, 2023 by avibootz
...